diff --git a/src/Data/StableTree/Persist.hs b/src/Data/StableTree/Persist.hs
--- a/src/Data/StableTree/Persist.hs
+++ b/src/Data/StableTree/Persist.hs
@@ -74,7 +74,7 @@
 -- |Write appropriate functions here to load and store primitive parts of
 -- trees.
 data Store m e k v = Store
-  { loadTree   :: Id -> m (Either e (Depth, Map k Id))
+  { loadTree   :: Id -> m (Either e (Depth, Map k (ValueCount, Id)))
   , loadValue  :: Id -> m (Either e v)
   , storeTree  :: Id -> Depth -> Map k (ValueCount, Id) -> m (Maybe e)
   , storeValue :: Id -> v -> m (Maybe e)
@@ -108,7 +108,7 @@
   loadValues cont accum =
     case Map.minViewWithKey cont of
       Nothing -> return accum
-      Just ((k,valId),rest) -> do
+      Just ((k,(_,valId)),rest) -> do
         v <- liftEither $ loadValue storage valId
         loadValues rest $ Map.insert k v accum
 
@@ -144,7 +144,7 @@
   loadChildren cont accum =
     case Map.minViewWithKey cont of
       Nothing -> return accum
-      Just ((k,valId),rest) -> do
+      Just ((k,(_,valId)),rest) -> do
         subtree <- load' storage valId
         loadChildren rest $ Map.insert k subtree accum
 
diff --git a/src/Data/StableTree/Persist/Ram.hs b/src/Data/StableTree/Persist/Ram.hs
--- a/src/Data/StableTree/Persist/Ram.hs
+++ b/src/Data/StableTree/Persist/Ram.hs
@@ -42,7 +42,7 @@
     case Map.lookup tid m of
       Nothing -> return $ Left $ NoTree tid
       Just (depth, children) ->
-        return $ Right (depth, Map.map snd children)
+        return $ Right (depth, children)
 
   lv store vid = do
     m <- readIORef store
diff --git a/stable-tree.cabal b/stable-tree.cabal
--- a/stable-tree.cabal
+++ b/stable-tree.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                stable-tree
-version:             0.4.0
+version:             0.4.1
 synopsis:            Trees whose branches are resistant to change
 -- description:         
 homepage:            https://github.com/tsuraan/stable-tree
