Static single assignment (SSA) form is an intermediate program representation in which many code optimizations can be performed with fast and easy to implement algorithms. However, some of these optimizations create situations where SSA variables that correspond to the same original variable now have overlapping live ranges. This makes the translation from SSA code to standard code more complicated. There are three issues: correctness, optimization (elimination of useless copies), speed (of algorithms). Briggs et al. addressed mainly the first point and proposed patches to correct the original approach of Cytron et al. For correctness, a simpler approach was then proposed by Sreedhar et al. who also developed techniques to reduce the number of generated copies. We go one step further. We propose a conceptually simpler approach, based on coalescing and a more precise view of interferences, where correctness and optimization are separated. First, it reduces significantly the number of generated copies compared to previous approaches. Second, it allows us to develop algorithms that are simpler to implement, with no patches or particular cases as in previous solutions, and that are fast enough to be suitable for just-in-time compilation.