diff --git a/higher-leveldb.cabal b/higher-leveldb.cabal
--- a/higher-leveldb.cabal
+++ b/higher-leveldb.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                higher-leveldb
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            A rich monadic API for working with leveldb databases.
 description:         A rich monadic API for working with leveldb databases.
 homepage:            https://github.com/jeremyjh/higher-leveldb
diff --git a/src/Database/LevelDB/Higher.hs b/src/Database/LevelDB/Higher.hs
--- a/src/Database/LevelDB/Higher.hs
+++ b/src/Database/LevelDB/Higher.hs
@@ -347,16 +347,18 @@
      -> m b
 scan k scanQuery = do
     (db, ksId, (ropt,_)) <- getDB
-    withIterator db ropt $ doScan (ksId <> k)
+    withIterator db ropt $ doScan (ksId <> k) ksId
   where
-    doScan prefix iter = do
+    doScan prefix ksId iter = do
         iterSeek iter prefix
         applyIterate initV
       where
         readItem = do
             nk <- iterKey iter
             nv <- iterValue iter
-            return (fmap (BS.drop 4) nk, nv) --unkeyspace
+            if sameKsId nk then
+                return (fmap (BS.drop 4) nk, nv) --unkeyspace
+                else return (Nothing, Nothing)
         applyIterate acc = do
             item <- readItem
             case item of
@@ -369,6 +371,8 @@
                                  else items
                     else return acc
                 _ -> return acc
+        sameKsId Nothing = False
+        sameKsId (Just nk) = BS.take 4 nk == ksId
     initV = scanInit scanQuery
     whileFn = scanWhile scanQuery k
     mapFn = scanMap scanQuery
