diff --git a/hsx.cabal b/hsx.cabal
--- a/hsx.cabal
+++ b/hsx.cabal
@@ -1,5 +1,5 @@
 Name:                   hsx
-Version:                0.4.6
+Version:                0.4.8
 License:                BSD3
 License-File:           LICENSE
 Author:                 Niklas Broberg, Joel Björnson
@@ -29,9 +29,10 @@
                         
 Homepage:               http://code.google.com/hsp
 
-Build-Depends:          base>3, mtl, haskell-src-exts==0.4.*, utf8-string
+Build-Depends:          base>3, mtl, haskell-src-exts==0.4.8, utf8-string
 Build-Type:             Simple
-Tested-With:            GHC==6.8.3
+Tested-With:            GHC==6.8.3, GHC==6.10.1
+Cabal-version:          >= 1.2.3
 
 Hs-Source-Dirs: src
 Exposed-Modules:        HSX.XMLGenerator, HSX.Transform
diff --git a/src/HSX/Transform.hs b/src/HSX/Transform.hs
--- a/src/HSX/Transform.hs
+++ b/src/HSX/Transform.hs
@@ -72,11 +72,11 @@
 -- | Transform away occurences of regular patterns from an abstract
 -- Haskell module, preserving semantics.
 transform :: Module -> Module
-transform (Module s m mes is decls) =
+transform (Module s m pragmas warn mes is decls) =
     let (decls', (harp, hsx)) = runHsxM $ mapM transformDecl decls
         -- We may need to add an import for Match.hs that defines the matcher monad
         imps1 = if harp 
-             then (:) $ ImportDecl s match_mod True
+             then (:) $ ImportDecl s match_mod True False
                             (Just match_qual_mod)
                             Nothing
              else id
@@ -85,7 +85,7 @@
                          Nothing
                          Nothing
                  else -} id     -- we no longer want to import HSP.Data
-     in Module s m mes (imps1 $ imps2 is) decls'
+     in Module s m pragmas warn mes (imps1 $ imps2 is) decls'
 
 -----------------------------------------------------------------------------
 -- Declarations
@@ -96,7 +96,7 @@
 transformDecl d = case d of
     -- Pattern binds can contain regular patterns in the pattern being bound
     -- as well as on the right-hand side and in declarations in a where clause
-    PatBind srcloc pat rhs decls -> do
+    PatBind srcloc pat mty rhs decls -> do
         -- Preserve semantics of irrefutable regular patterns by postponing
         -- their evaluation to a let-expression on the right-hand side
         let ([pat'], rnpss) = unzip $ renameIrrPats [pat]
@@ -112,7 +112,7 @@
                                return $ BDecls $ decls'' ++ ds'
                _           -> error "Cannot bind implicit parameters in the \
                         \ \'where\' clause of a function using regular patterns."
-        return $ PatBind srcloc pat'' rhs' decls'
+        return $ PatBind srcloc pat'' mty rhs' decls'
 
     -- Function binds can contain regular patterns in their matches
     FunBind ms -> fmap FunBind $ mapM transformMatch ms
@@ -145,7 +145,7 @@
 -- Subterms, such as guards and the right-hand side, are also traversed
 -- transformed.
 transformMatch :: Match -> HsxM Match
-transformMatch (Match srcloc name pats rhs decls) = do
+transformMatch (Match srcloc name pats mty rhs decls) = do
     -- Preserve semantics of irrefutable regular patterns by postponing
     -- their evaluation to a let-expression on the right-hand side
     let (pats', rnpss) = unzip $ renameIrrPats pats
@@ -162,7 +162,7 @@
            _           -> error "Cannot bind implicit parameters in the \
                      \ \'where\' clause of a function using regular patterns."
 
-    return $ Match srcloc name pats'' rhs' decls'
+    return $ Match srcloc name pats'' mty rhs' decls'
 -- | Transform and update guards and right-hand side of a function or
 -- pattern binding. The supplied list of guards is prepended to the 
 -- original guards, and subterms are traversed and transformed.
@@ -371,7 +371,7 @@
         transformLDs k l ds = case ds of
             []     -> return []
             (d:ds) -> case d of
-                PatBind srcloc pat rhs decls -> do
+                PatBind srcloc pat mty rhs decls -> do
                     -- We need to transform all pattern bindings in a set of
                     -- declarations in the same context w.r.t. generating fresh
                     -- variable names, since they will all be in scope at the same time.
@@ -401,7 +401,7 @@
                     -- The generated guards, which should be at most one, should be
                     -- added as declarations rather than as guards due to the
                     -- scoping issue described above.
-                    return $ (PatBind srcloc pat' rhs' decls') : ags' ++ gs' ++ ds'
+                    return $ (PatBind srcloc pat' mty rhs' decls') : ags' ++ gs' ++ ds'
 
                     -- We only need to treat pattern binds separately, other declarations
                     -- can be transformed normally.
@@ -653,12 +653,12 @@
   where renameLetDecl :: Decl -> RN (Decl, [(SrcLoc, Name, Pat)])
         renameLetDecl d = case d of
             -- We need only bother about pattern bindings.
-            PatBind srcloc pat rhs decls -> do
+            PatBind srcloc pat mty rhs decls -> do
                 -- Rename any regular patterns that appear in the
                 -- pattern being bound.
                 (p, ms) <- renameRP pat
                 let sms = map (\(n,p) -> (srcloc, n, p)) ms
-                return $ (PatBind srcloc p rhs decls, sms)
+                return $ (PatBind srcloc p mty rhs decls, sms)
             _ -> return (d, [])
 
 
