Microscopic modeling of multi-lane traffic is usually done by applying heuristic lane changing rules, and often with unsatisfying results. Recently, a cellular automaton model for two-lane traffic was able to overcome some of these problems and to produce a correct density inversion at densities somewhat below the maximum flow density. In this paper, we summarize different approaches to lane changing and their results, and propose a general scheme, according to which realistic lane changing rules can be developed. We test this scheme by applying it to several different lane changing rules, which, in spite of their differences, generate similar and realistic results. We thus conclude that, for producing realistic results, the logical structure of the lane changing rules, as proposed here, is at least as important as the microscopic details of the rules.