diff --git a/hsx2hs.cabal b/hsx2hs.cabal
--- a/hsx2hs.cabal
+++ b/hsx2hs.cabal
@@ -1,5 +1,5 @@
 Name:                   hsx2hs
-Version:                0.13.1
+Version:                0.13.2
 License:                BSD3
 License-File:           LICENSE
 Author:                 Niklas Broberg, Joel Bjornson
@@ -29,7 +29,7 @@
                         
 Homepage:               http://hub.darcs.net/nibro/hsx2hs
 
-Tested-With:            GHC==7.6.3
+Tested-With:            GHC==7.6.3, GHC==7.8.2
 Cabal-Version: 		>= 1.6
 Build-Type:             Simple
 
@@ -41,10 +41,10 @@
 Flag base4
 
 Library
-  Build-depends:	mtl              >= 2.0 && < 2.2,
-                        haskell-src-exts == 1.14.*,
-                        haskell-src-meta >= 0.6,
-                        template-haskell >= 2.7 && < 2.9,
+  Build-depends:	mtl              >= 2.0  && < 2.3,
+                        haskell-src-exts >= 1.14 && < 1.16,
+                        haskell-src-meta >= 0.6  && < 0.7,
+                        template-haskell >= 2.7  && < 2.10,
                         utf8-string      == 0.3.*
 
   if flag(base4)
diff --git a/src/Language/Haskell/HSX/Transform.hs b/src/Language/Haskell/HSX/Transform.hs
--- a/src/Language/Haskell/HSX/Transform.hs
+++ b/src/Language/Haskell/HSX/Transform.hs
@@ -21,6 +21,8 @@
 import Language.Haskell.Exts.Syntax
 import Language.Haskell.Exts.Build
 import Language.Haskell.Exts.SrcLoc (noLoc)
+import Control.Applicative (Applicative(pure, (<*>)))
+import Control.Monad       (ap)
 import Data.List (union)
 
 import Debug.Trace (trace)
@@ -31,6 +33,10 @@
 
 newtype HsxM a = MkHsxM (HsxState -> (a, HsxState))
 
+instance Applicative HsxM where
+  pure  = return
+  (<*>) = ap
+
 instance Monad HsxM where
  return x = MkHsxM (\s -> (x,s))
  (MkHsxM f) >>= k = MkHsxM (\s -> let (a, s') = f s
@@ -627,6 +633,10 @@
 
 initRNState = 0
 
+instance Applicative RN where
+  pure  = return
+  (<*>) = ap
+
 instance Monad RN where
  return a = RN $ \s -> (a,s)
  (RN f) >>= k = RN $ \s -> let (a,s') = f s
@@ -805,6 +815,10 @@
 
 newtype Tr a = Tr (State -> HsxM (a, State))
 
+instance Applicative Tr where
+  pure  = return
+  (<*>) = ap
+
 instance Monad Tr where
  return a = Tr $ \s -> return (a, s)
  (Tr f) >>= k = Tr $ \s ->
@@ -994,7 +1008,6 @@
     PWildCard          -> return p
     PIrrPat p          -> tr1pat p PIrrPat (trPattern s)
     PatTypeSig s p t   -> tr1pat p (\p -> PatTypeSig s p t) (trPattern s)
-    PExplTypeArg _ _   -> return p
     PQuasiQuote _ _    -> return p
     PBangPat p         -> tr1pat p PBangPat (trPattern s)
     PNPlusK _ _        -> return p
