We construct Markov partitions for non-invertible and/or singular nonuniformy hyperbolic systems defined on higher dimensional Riemannian manifolds. The generality of the setup covers classical examples not treated so far, such as geodesic flows in closed manifolds, multidimensional billiard maps, and Viana maps, and includes all the recent results of the literature. We also provide a wealth of applications. 24 3.3. Double charts 27 3.4. The graph transform method 28 3.5. Stable/unstable manifolds of ε-gpo's 29 3.6. Stable/unstable sets of ε-gpo's 31 3.7. Hyperbolicity along stable/unstable sets 34 4. Coarse graining 37 5. The inverse problem 41