This paper presents a new mesh generation technique, paving, which meshes arbitrary 2-D geometries with an all-quadrilateral mesh. Paving allows varying element size distributions on the boundary as well as the interior of a region. The generated mesh is well formed (i.e. nearly square elements, elements perpendicular to boundaries, etc.) and geometrically pleasing (i.e. mesh contours tend to follow geometric contours of the boundary). In this paper we describe the theory behind this algorithmic/heuristic technique, evaluate the performance of the approach and present examples of automatically generated meshes.