diff --git a/src/Text/XML/WraXML/String.hs b/src/Text/XML/WraXML/String.hs
--- a/src/Text/XML/WraXML/String.hs
+++ b/src/Text/XML/WraXML/String.hs
@@ -87,7 +87,7 @@
 utf8ToUnicodeString = toUnicodeString . replaceUTF8ByUnicode
 
 
-readHex :: (Num a) => String -> a
+readHex :: (Eq a, Num a) => String -> a
 readHex str =
    case Numeric.readHex str of
       [(n,"")] -> n
diff --git a/src/Text/XML/WraXML/Tree/HaXml.hs b/src/Text/XML/WraXML/Tree/HaXml.hs
--- a/src/Text/XML/WraXML/Tree/HaXml.hs
+++ b/src/Text/XML/WraXML/Tree/HaXml.hs
@@ -1,4 +1,12 @@
-module Text.XML.WraXML.Tree.HaXml where
+module Text.XML.WraXML.Tree.HaXml (
+   fromXmlTree,
+   multiFromXmlTree,
+   toXmlTree, toXmlTree',
+   lift,
+   onContent,
+   liftFilterToDocument,
+   processWith,
+   ) where
 
 import qualified Text.XML.HaXml as HaXml
 import           Text.XML.HaXml.Posn(Posn, posInNewCxt)
@@ -20,7 +28,7 @@
 import qualified Text.XML.Basic.Name as Name
 import qualified Text.XML.Basic.ProcessingInstruction as PI
 
-import Data.Tuple.HT (mapSnd, )
+import Data.Tuple.HT (mapPair, )
 
 
 {- * conversion from our XML tree to HaXml tree -}
@@ -33,6 +41,14 @@
       [y] -> y
       _   -> error "top branch can't be a string"
 
+haxmlName :: (Name.C name) => name -> HaXml.QName
+haxmlName = HaXml.N . Name.toString
+
+fromAttribute ::
+   (Name.Attribute name) => Attr.T name XmlString.T -> HaXml.Attribute
+fromAttribute =
+   mapPair (HaXml.N, HaXmlString.fromXmlString) . Attr.toPair
+
 multiFromXmlTree ::
    (Name.Tag name, Name.Attribute name) =>
    XmlTree.T i name XmlString.T -> [HaXml.Content i]
@@ -42,8 +58,8 @@
       (\x subs i ->
           case x of
              Tag (Elem.Cons name attrs) ->
-               [HaXml.CElem (HaXml.Elem (Name.toString name)
-                  (map (mapSnd HaXmlString.fromXmlString . Attr.toPair) attrs)
+               [HaXml.CElem (HaXml.Elem (haxmlName name)
+                  (map fromAttribute attrs)
                   (concat subs)) i])
       (\x i ->
           case x of
@@ -75,12 +91,16 @@
 toXmlTree = XmlTree.mergeStrings . toXmlTree'
 
 
+toAttribute :: HaXml.Attribute -> (String, XmlString.T)
+toAttribute =
+   mapPair (HaXml.qname, HaXmlString.toXmlString)
+
 toXmlTree' x =
    case x of
       HaXml.CElem (HaXml.Elem name attrs subTrees) i ->
          XmlTreeL.tagIndexAttr i
-            name
-            (map (mapSnd HaXmlString.toXmlString) attrs)
+            (HaXml.qname name)
+            (map toAttribute attrs)
             (map toXmlTree' subTrees)
       HaXml.CString whitespace str i ->
          XmlTree.wrap2 i $
diff --git a/wraxml.cabal b/wraxml.cabal
--- a/wraxml.cabal
+++ b/wraxml.cabal
@@ -1,5 +1,5 @@
 Name:           wraxml
-Version:        0.4.3.1
+Version:        0.4.4
 License:        GPL
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
@@ -51,7 +51,7 @@
 Source-Repository this
    Type:     darcs
    Location: http://code.haskell.org/~thielema/wraxml/
-   Tag:      0.4.3.1
+   Tag:      0.4.4
 
 Flag buildExamples
    description: Build example executables
@@ -59,18 +59,18 @@
 
 Library
   Build-Depends:
-    polyparse >=1.2 && <1.4,
-    tagsoup >=0.8 && <0.11,
+    polyparse >=1.2 && <1.9,
+    tagsoup >=0.8 && <0.13,
     tagchup >=0.4 && <0.5,
     xml-basic >=0.1 && <0.2,
-    HaXml >=1.19.4 && <1.20,
+    HaXml >=1.23 && <1.24,
     hxt >=8.5.0 && <8.6,
     hxt-filter >=8.1.1 && <9,
-    transformers >=0.2 && <0.3,
+    transformers >=0.2 && <0.4,
     utility-ht >=0.0.4 && <0.1,
     explicit-exception >=0.1.3 && <0.2,
     data-accessor >=0.2 && <0.3,
-    containers >=0.1 && <0.5,
+    containers >=0.1 && <0.6,
     base >=3 && <5
   GHC-Options:    -Wall
   Hs-source-dirs: src
