diff --git a/Text/XML/Expat/Internal/DocumentClass.hs b/Text/XML/Expat/Internal/DocumentClass.hs
--- a/Text/XML/Expat/Internal/DocumentClass.hs
+++ b/Text/XML/Expat/Internal/DocumentClass.hs
@@ -19,7 +19,7 @@
 data XMLDeclaration text = XMLDeclaration text (Maybe text) (Maybe Bool) deriving (Eq, Show)
 
 -- | Stub for future expansion.
-data DocumentTypeDeclaration c tag text = DocumentTypeDeclaration deriving (Eq, Show)
+data DocumentTypeDeclaration (c :: * -> *) tag text = DocumentTypeDeclaration deriving (Eq, Show)
 
 data Misc text =
     Comment !text |
@@ -41,9 +41,9 @@
     rnf (ProcessingInstruction target txt) = rnf (target, txt)
     rnf (Comment txt) = rnf txt
 
-type family NodeType d :: (* -> *) -> * -> * -> *
+type family NodeType (d :: (* -> *) -> * -> * -> *) :: (* -> *) -> * -> * -> *
 
-class (Functor c, List c, NodeClass (NodeType d) c) => DocumentClass d c where
+class (Functor c, List c, NodeClass (NodeType d) c) => DocumentClass d (c :: * -> *) where
     -- | Get the XML declaration for this document.
     getXMLDeclaration :: d c tag text -> Maybe (XMLDeclaration text)
 
diff --git a/Text/XML/Expat/Internal/IO.hs b/Text/XML/Expat/Internal/IO.hs
--- a/Text/XML/Expat/Internal/IO.hs
+++ b/Text/XML/Expat/Internal/IO.hs
@@ -63,8 +63,9 @@
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as BSL
 import Data.IORef
-import Foreign
+import Foreign hiding (unsafePerformIO)
 import Foreign.C
+import System.IO.Unsafe (unsafePerformIO)
 
 
 -- |Opaque parser type.
diff --git a/Text/XML/Expat/Internal/NodeClass.hs b/Text/XML/Expat/Internal/NodeClass.hs
--- a/Text/XML/Expat/Internal/NodeClass.hs
+++ b/Text/XML/Expat/Internal/NodeClass.hs
@@ -29,7 +29,7 @@
 -- list type for the specified node type, e.g. @ListOf (UNode Text)@
 type family ListOf n
 
-class (Functor c, List c) => NodeClass n c where
+class (Functor c, List c) => NodeClass (n :: (* -> *) -> * -> * -> *) c where
 
     -- | Is the given node an element?
     isElement :: n c tag text -> Bool
diff --git a/hexpat.cabal b/hexpat.cabal
--- a/hexpat.cabal
+++ b/hexpat.cabal
@@ -1,6 +1,6 @@
 Cabal-Version: >= 1.6
 Name: hexpat
-Version: 0.19.9
+Version: 0.19.10
 Synopsis: XML parser/formatter based on expat
 Description:
   This package provides a general purpose Haskell XML library using Expat to
@@ -52,7 +52,7 @@
     which broke entity parsing; 0.19.4 bump version constraint for text; 0.19.5 bump text
     to < 0.12 and fix text-0.10.0.1 breakage; 0.19.6 dependency breakage with List;
     0.19.7 ghc-7.2.1 compatibility; 0.19.8 fix space leak on lazy parse under ghc-7.2.1;
-    0.19.9 fix formatting of > character + improve performance
+    0.19.9 fix formatting of > character + improve performance; 0.9.10 ghc-7.4.x compatibility.
 Category: XML
 License: BSD3
 License-File: LICENSE
@@ -123,7 +123,7 @@
     transformers,
     text >= 0.5 && < 0.12,
     utf8-string == 0.3.*,
-    deepseq == 1.1.*,
+    deepseq >= 1.1.0.0 && < 1.4.0.0,
     containers,
     extensible-exceptions == 0.1.*,
     List >= 0.4.2 && < 0.5
diff --git a/test/hexpat-tests.cabal b/test/hexpat-tests.cabal
--- a/test/hexpat-tests.cabal
+++ b/test/hexpat-tests.cabal
@@ -15,8 +15,8 @@
     containers,
     transformers,
     deepseq >= 1.1.0.0,
-    parallel == 3.1.*,
-    test-framework == 0.3.*,
+    parallel >= 3.1.0.0 && < 3.3.0.0,
+    test-framework > 0.3.0,
     test-framework-hunit == 0.2.*,
     test-framework-quickcheck2 == 0.2.*,
     text >= 0.5,
