A distributed system is self-stabilizing if it can be started in any possible global state. Once started the system regains its consistency by itself, without any kind of an outside intervention. The self-stabilization property makes the system tolerant to faults in which processors crash and then recover spontaneously in an arbitrary state. When the intermediate period in between one recovery and the next crash is long enough the system stabilizes. A distributed system is uniform if all processors with the same number of neighbors are identical. A distributed system is dynamic if it can tolerate addition or deletion of processors and links without reinitialization. In this work we present three dynamic, uniform, self-stabilizing protocols for leader election: The first protocol works on complete graphs. The second protocol works for systems with unbounded number of processor in which the size of the memory of a processor is unbounded. The third protocol works for systems whose communication graph has a bounded diameter; it uses a bounded amount of memory. We conclude this work by presenting a simple, uniform, self-stabilizing ranking protocol.