diff --git a/Text/XML/Expat/Pickle.hs b/Text/XML/Expat/Pickle.hs
--- a/Text/XML/Expat/Pickle.hs
+++ b/Text/XML/Expat/Pickle.hs
@@ -126,12 +126,15 @@
         -- * Re-exported types
         UNode,
         QNode,
+        NNode,
         Nodes,
         UNodes,
         QNodes,
+        NNodes,
         Attributes,
         UAttributes,
         QAttributes,
+        NAttributes,
         -- * Pickler adapters
         xpRoot,
         xpContent,
@@ -185,7 +188,6 @@
 import Text.XML.Expat.Namespaced
 import Control.Exception.Extensible
 import Data.Maybe
-import Data.Either
 import Data.List
 import Data.Char
 import Data.Monoid
@@ -653,6 +655,8 @@
                                 Right _ -> Right $ rights m,
         pickleTree = \t -> mconcat $ map (pickleTree pu) t
     }
+  where
+    rights x = [a | Right a <- x]  -- In Data.Either in base 4.x, but doesn't exist in base 3.x
 
 -- | Like xpList, but only succeed during deserialization if at least a minimum number of elements are unpickled.
 xpListMinLen :: Show tag => Int -> PU (Nodes tag text) a -> PU (Nodes tag text) [a]
diff --git a/hexpat-pickle.cabal b/hexpat-pickle.cabal
--- a/hexpat-pickle.cabal
+++ b/hexpat-pickle.cabal
@@ -1,6 +1,6 @@
 Cabal-Version: >= 1.2
 Name: hexpat-pickle
-Version: 0.3
+Version: 0.3.1
 Synopsis: XML picklers based on hexpat, source-code-similar to those of the HXT package
 Description:
   A library of combinators that allows Haskell data structures to be pickled
@@ -35,7 +35,7 @@
 
 Library
   Build-Depends:
-    base,
+    base >= 3 && < 5,
     hexpat >= 0.5,
     utf8-string >= 0.3.3,
     bytestring >= 0.9,
