diff --git a/Setup.lhs b/Setup.lhs
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -2,4 +2,4 @@
 > module Main where
 > import Distribution.Simple
 > main :: IO ()
-> main = defaultMainWithHooks defaultUserHooks
+> main = defaultMain
diff --git a/libxml.cabal b/libxml.cabal
--- a/libxml.cabal
+++ b/libxml.cabal
@@ -1,23 +1,36 @@
-Name: libxml
-Version: 0.1
-Maintainer: Lemmih (lemmih@gmail.com)
-Author: Lemmih (lemmih@gmail.com)
-Copyright: 2006, Lemmih
-License-File: LICENSE
-License: BSD3
-Build-Depends: base, mtl
-Category: Foreign binding
-Synopsis: Binding to libxml2
+Name:           libxml
+Version:        0.1.1
+Maintainer:     Lemmih (lemmih@gmail.com)
+Author:         Lemmih (lemmih@gmail.com)
+Copyright:      2006, Lemmih
+License-File:   LICENSE
+License:        BSD3
+Category:       XML
+Synopsis:       Binding to libxml2
+Cabal-Version:  >=1.2
+build-type:     Simple
 Description:
   Minimal binding to libxml2. Additional functions will be added when needed.
-Extensions: CPP, ForeignFunctionInterface
-Hs-Source-Dirs: src
-Exposed-Modules:
-  Text.XML.LibXML
-  Text.XML.LibXML.Types
-  Text.XML.LibXML.Internals
-  Text.XML.LibXML.Tree
-  Text.XML.LibXML.Parser
-Includes: libxml/xmlIO.h libxml/xmlmemory.h
-Extra-Libraries: xml2
-GHC-Options: -fglasgow-exts -Wall -Werror -O2
+
+flag small_base
+  description: Choose the new smaller, split-up base package.
+
+library
+    if flag(small_base)
+        build-depends: base >= 3, bytestring
+    else
+        build-depends: base <  3
+
+    build-depends: mtl
+    extensions: CPP, ForeignFunctionInterface
+    hs-source-dirs: src
+
+    Exposed-Modules:
+      Text.XML.LibXML
+      Text.XML.LibXML.Types
+      Text.XML.LibXML.Internals
+      Text.XML.LibXML.Tree
+      Text.XML.LibXML.Parser
+
+    includes: libxml/xmlIO.h libxml/xmlmemory.h
+    extra-libraries: xml2
diff --git a/src/Text/XML/LibXML/Parser.hs b/src/Text/XML/LibXML/Parser.hs
--- a/src/Text/XML/LibXML/Parser.hs
+++ b/src/Text/XML/LibXML/Parser.hs
@@ -13,7 +13,7 @@
 import Control.Monad.Trans
 
 import qualified Data.ByteString as BS
-import qualified Data.ByteString.Base as BS
+import qualified Data.ByteString.Unsafe as BS
 import Data.ByteString (ByteString)
 
 import Text.XML.LibXML.Types
@@ -24,7 +24,7 @@
 
 -- | Parse XML document from a file. Throws an exception on error.
 parseFile :: MonadIO m => FilePath -> m Document
-parseFile pat
+parseFile path
     = do mbDoc <- parseFile_ path
          case mbDoc of
            Nothing -> error $ "Text.XML.LibXml.parseFile: failed to parse input from: " ++ path
diff --git a/src/Text/XML/LibXML/Tree.hs b/src/Text/XML/LibXML/Tree.hs
--- a/src/Text/XML/LibXML/Tree.hs
+++ b/src/Text/XML/LibXML/Tree.hs
@@ -20,7 +20,7 @@
 import Control.Monad.Trans
 
 import qualified Data.ByteString as BS
-import qualified Data.ByteString.Base as BS
+import qualified Data.ByteString.Internal as BS
 import Data.ByteString (ByteString)
 
 import Text.XML.LibXML.Types
