Vacuum leak, Coil, ballast resistor, Electronic Control Module, and my personal favorite... some sender wire that's grounding out in the engine compartment somewhere can throw a false signal to the coil causing erattic timing (don't ask me how I know).