diff --git a/Data/Graph/Libgraph.hs b/Data/Graph/Libgraph.hs
--- a/Data/Graph/Libgraph.hs
+++ b/Data/Graph/Libgraph.hs
@@ -34,6 +34,8 @@
 , collapse
 , remove
 , treeDepth
+, succCache
+, predCache
 ) where
 import Data.Graph.Libgraph.Core
 import Data.Graph.Libgraph.DepthFirst
diff --git a/Data/Graph/Libgraph/Core.hs b/Data/Graph/Libgraph/Core.hs
--- a/Data/Graph/Libgraph/Core.hs
+++ b/Data/Graph/Libgraph/Core.hs
@@ -57,7 +57,14 @@
                         Nothing -> []
                         (Just ws) -> ws
 
-  where m = foldl (\m' (Arc v w _) -> insertCon v w m') Map.empty (arcs g)
+  where m = foldl' (\m' (Arc v w _) -> insertCon v w m') Map.empty (arcs g)
+
+predCache :: Ord vertex => Graph vertex arc -> (vertex -> [vertex])
+predCache g = \v -> case Map.lookup v m of 
+                        Nothing -> []
+                        (Just ws) -> ws
+
+  where m = foldl' (\m' (Arc v w _) -> insertCon w v m') Map.empty (arcs g)
   
 
 insertCon :: Ord k => k -> a -> Map k [a] -> Map k [a]
diff --git a/libgraph.cabal b/libgraph.cabal
--- a/libgraph.cabal
+++ b/libgraph.cabal
@@ -1,5 +1,5 @@
 Name:           libgraph
-Version:        1.11
+Version:        1.12
 Homepage:       http://maartenfaddegon.nl
 Synopsis:       Store and manipulate data in a graph.
 Description:    A graph type, analysis of graphs and manipulation of graphs.
