If S is not path connected, apply the following procedure to each path component. Since S is locally path connected (an assumption we make about all covering spaces), each path component becomes a disconnected component. Thus we are really applying the procedure to each disconnected component, which happens to be path connected. The disjoint union of the resulting covers becomes a covering space for all of S.

Fix a base point x in S. Consider any point a in S and draw a path l from x to a. The set of paths homotoppic to l, with x and a fixed, forms an equivalence class, and this class becomes a point in S~.

Let U be an open set in S. The path classes that wind up in U form an open set in S~. This is a valid topology for S~, just as the open sets form a valid topology for S. Also, every point a has at least one point in S~ - at least one path from x to a.

Let the projection p map the paths ending in a down to a. The preimage of U is open by definition, hence p is continuous. The hard part is showing p covers S evenly.

Let U be an open set in S about a that is simply connected relative to S. Select a path l from x to a, and connect a to e (inside U) to make a path from x to e. Since U is simply connected, all paths from a to e are homotopic in S. The class of paths to e is well defined. This gives a map from U back to S~, once the path to a, a point in the fiber of a, is chosen.

Given a path to a, let V be the aforementioned preimage of U. Paths of U and points of U are synonymous, and open sets correspond as well, hence V and U are homeomorphic.

Let a~ be the chosen path from x to a, which is the base point in V. Let e~ be another point in the same path component of the preimage of U. Draw a path from a~ to e~ and apply p, giving a path from a to e inside U. This is homotopic to the path we used to define e~ in the first place. Thus V is one of the path components in the preimage of U. This proves S is evenly covered, whence {S~,p,S} is a covering space.

Finally show S~ is simply connected by projecting any loop in S~, starting at a~, down to a loop in S starting at a. Lifte this back to a path in S~, which has to be the original oop by the path lifting theorem. If l is the path from x to a, and e is a point in the loop downstairs, join l with the path from a to e, along the loop, to get e~ upstairs. (You need to step through a finite number of evenly covered regions to perform this lift, which can be done, since the path from a to e is compact.) Move e all the way around the loop, back to a. Now e~ returns to a~, which is the original path l. Move along l and around the bottom loop and find a path homotopic to l. The homotopy shrinks the loop down to the point a. (Technically we have to change the homotopy so that running along l for 5 seconds, and wrapping around the loop for 1 second, becomes running along l for 5 seconds, then sitting at a for 1 second; rather than running along l for 6 seconds. Now the loop is truly homotopic to the unit interval mapped to a. You get the idea.) By the homotopy lifting theorem, a homotopy upstairs shrinks the corresponding loop to a~. Since the loop upstairs was arbitrary, S~ is simply connected, and a universal cover for S.

Note that any set U downstairs that is semilocally simply connected has a homeomorphic preimage V upstairs, and is evenly covered. In some cases this can be used to characterize S~. If S consists of squares sewn together, where each square is small enough to be locally simmply connected, then S~ also looks like squares sewn together. Of course the squares of S~ do not reconnect to make loops. Put four squares together to make a larger square, then sew opposite sides together to make a torus. The universal cover is a checkerboard over the entire plane.

Another example, not entirely unlike the one above, is the plane without the origin.
Let 1 be the base point and draw a path to any other point by spinning around the unit circle as often as you like,
then moving radially out to the destination.
If you spread this all out, it is homeomorphic to **R**2,
and the projection is the complex exponential function.

By fiber correspondence, the fiber of any point is determined by the fiber of x at the base. A path from x to x is a loop, and all the loops in H become a single point in the fiber of x. If c is a loop outside of H, apply another loop d in reverse and get back to H. Thus c/d lies in H, whence c and d represent the same coset of H. The fiber of x is determined by the right cosets of H.

Let x~ be a point in the fiber of x, and evaluate the fundamental group of S~ at x~. Let a loop at x~ represent an element in the fundamental group of S~, and project it to a loop downstairs based at x. This pulls back to the same loop upstairs. Let's see what this tells us.

The point x~ is actually a loop in H. Move along the loop downstairs, always taking steps within the homeomorphic regions implied by the even covering. The corresponding point upstairs is, or may as well be, the original loop x~, followed by the path that moves partway along the loop downstairs. In the end we have the loop of x~, followed by the loop downstairs. The result is another representation of x~. Put this all together and the loop downstairs belongs to H. In other words, π(S~) embeds in H.

Conversely, start with a loop in H and lift it to a path upstairs. The resulting path from x back to itself is part of H, and is equivalent to x~. Thus the path upstairs starts and ends at x~, and is really a loop. All of H is covered, and π(S~) at x~ = H.

If H is trivial, π(S~) is also trivial. This confirms the fact that S~ is simply connected, and a universal cover for S. At the other extreme, H could be all of π(S), whence S~ = S. Each subgroup in between generates an intermediate covering space.