Physical layer techniques have come a long way and can achieve very close to Shannon capacity for point-to-pint links. It is apparent that, to further improve network capacity significantly, we have to resort to concurrent transmissions. Many concurrent transmission techniques (e.g., zero forcing, interference alignment and distributed MIMO) are proposed in which multiple senders jointly encode signals to multiple receivers so that interference is aligned and each receiver is able to decode its desired information. In this paper, we investigate the constraints and challenges of using interference alignment. Our main contribution is conducting the first systematic investigation on the key issue of identifying opportunities for interference alignment. We identify diverse, novel scenarios for using interference alignment. We show that identifying opportunities for interference alignment in the general case is computational challenging. However, we also present a promising, distributed algorithm for identifying a wide range of opportunities for interference alignment using a unifying framework based on the degree of freedom. Our second contribution is evaluating key practical implementation issues.