diff --git a/Data/Compressed/Internal/LZ78.hs b/Data/Compressed/Internal/LZ78.hs
--- a/Data/Compressed/Internal/LZ78.hs
+++ b/Data/Compressed/Internal/LZ78.hs
@@ -162,6 +162,28 @@
 recodeEq :: Eq a => LZ78 a -> LZ78 a 
 recodeEq = encodeEq . decode 
 
+data Entry i a = Entry !i a deriving (Show,Read)
+
+instance Functor (Entry i) where
+  fmap f (Entry i a) = Entry i (f a)
+
+instance Extend (Entry i) where
+  extend f e@(Entry i _) = Entry i (f e)
+  duplicate e@(Entry i _) = Entry i e
+
+instance Comonad (Entry i) where
+  extract (Entry _ a) = a
+
+instance Eq i => Eq (Entry i a) where
+  Entry i _ == Entry j _ = i == j
+
+instance Ord i => Ord (Entry i a) where
+  compare (Entry i _) (Entry j _) = compare i j
+
+instance Hashable i => Hashable (Entry i a) where
+  hash (Entry i _) = hash i
+  hashWithSalt n (Entry i _) = hashWithSalt n i
+
 -- | exposes internal structure
 entries :: LZ78 a -> LZ78 (Entry Int a)
 entries = go 0 where
@@ -187,6 +209,9 @@
     , Entry j b <- decode (entries (k a))
     ]
 
+instance Adjustable LZ78 where
+  adjust f i = fmap extract . encode . adjust (Entry (-1) . f . extract) i . decode . entries
+
 type instance Key LZ78 = Int
 
 instance Lookup LZ78 where
@@ -205,26 +230,4 @@
     | Entry j b <- decode (entries bs)
     ] 
 
-
-data Entry i a = Entry !i a
-
-instance Functor (Entry i) where
-  fmap f (Entry i a) = Entry i (f a)
-
-instance Extend (Entry i) where
-  extend f e@(Entry i _) = Entry i (f e)
-  duplicate e@(Entry i _) = Entry i e
-
-instance Comonad (Entry i) where
-  extract (Entry _ a) = a
-
-instance Eq i => Eq (Entry i a) where
-  Entry i _ == Entry j _ = i == j
-
-instance Ord i => Ord (Entry i a) where
-  compare (Entry i _) (Entry j _) = compare i j
-
-instance Hashable i => Hashable (Entry i a) where
-  hash (Entry i _) = hash i
-  hashWithSalt n (Entry i _) = hashWithSalt n i
 
diff --git a/Data/Compressed/RunLengthEncoding.hs b/Data/Compressed/RunLengthEncoding.hs
--- a/Data/Compressed/RunLengthEncoding.hs
+++ b/Data/Compressed/RunLengthEncoding.hs
@@ -220,10 +220,9 @@
 instance Lookup RLE where
   lookup i (RLE xs) 
     | i < 0 = Nothing
-    | otherwise = case viewl r of
+    | otherwise = case viewl $ snd $ split (\n -> getCount n > i) xs of
       Run _ a :< _ -> Just a
       EmptyL       -> Nothing 
-      where (l,r) = split (\n -> getCount n > i) xs
 
 instance Adjustable RLE where
   adjust f i (RLE xs) = RLE $ case viewl r of
@@ -232,8 +231,8 @@
       let 
         k = i - getCount (measure l)
         infixr 4 <?
-        Run 0 _ <? xs = xs
-        Run n a <? xs = Run n a <| xs
+        Run 0 _ <? ys = ys
+        Run m b <? ys = Run m b <| ys
      in l >< (Run k a <? Run 1 (f a) <? Run (n - k - 1) a <? r')
     where 
       (l,r) = split (\n -> getCount n > i) xs
diff --git a/compressed.cabal b/compressed.cabal
--- a/compressed.cabal
+++ b/compressed.cabal
@@ -1,6 +1,6 @@
 name:          compressed
 category:      Data, Compression, MapReduce
-version:       0.1
+version:       0.1.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
