diff --git a/Control/Monad/Unpack.hs b/Control/Monad/Unpack.hs
--- a/Control/Monad/Unpack.hs
+++ b/Control/Monad/Unpack.hs
diff --git a/Control/Monad/Unpack/TH.hs b/Control/Monad/Unpack/TH.hs
--- a/Control/Monad/Unpack/TH.hs
+++ b/Control/Monad/Unpack/TH.hs
@@ -73,12 +73,12 @@
     u <- getUnique
     funcName <- newName $ "UnpackedReaderTCon" ++ show u
     mName <- newName "m"
-    aName <- newName "a"
+    monadArgName <- newName "monadArg"
     fName <- newName "func"
     let decs = 
-	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT aName]
+	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT monadArgName]
 	    (NormalC funcName [(NotStrict, foldr (\ argTy result -> ArrowT `AppT` argTy `AppT` result)
-		  (VarT mName `AppT` VarT aName) conArgs)]) []] ++ pragmas ++ [
+		  (VarT mName `AppT` VarT monadArgName) conArgs)]) []] ++ pragmas ++ [
 	    FunD 'runUnpackedReaderT
 	      [Clause [ConP funcName [VarP fName], ConP conName (map VarP argNames)]
 		(NormalB (foldl AppE (VarE fName) (map VarE argNames))) []],
@@ -101,13 +101,13 @@
     u <- getUnique
     funcName <- newName $ "UnpackedReaderT" ++ show u
     mName <- newName "m"
-    aName <- newName "a"
+    monadArgName <- newName "monadArg"
     fName <- newName "func"
     let monadStack = foldr (\ argTy stk -> ConT ''UnpackedReaderT `AppT` argTy `AppT` stk)
 	  (VarT mName) conArgs
     let decs = 
-	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT aName]
-	    (NormalC funcName [(NotStrict, monadStack `AppT` VarT aName)]) []] ++ pragmas ++ [
+	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT monadArgName]
+	    (NormalC funcName [(NotStrict, monadStack `AppT` VarT monadArgName)]) []] ++ pragmas ++ [
 	    FunD 'runUnpackedReaderT
 	      [Clause [ConP funcName [VarP fName], ConP conName (map VarP argNames)]
 		(NormalB (foldl (\ func arg -> InfixE (Just func) (VarE 'runUnpackedReaderT)
@@ -134,11 +134,11 @@
     u <- getUnique
     funcName <- newName $ "UnpackedReaderT" ++ show u
     mName <- newName "m"
-    aName <- newName "a"
+    monadArgName <- newName "monadArg"
     fName <- newName "func"
     let decs = 
-	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT aName]
-	    (NormalC funcName [(NotStrict, ArrowT `AppT` theTy `AppT` (VarT mName `AppT` VarT aName))]) []] ++ pragmas ++ [
+	  [NewtypeInstD [] ''UnpackedReaderT [theTy, VarT mName, VarT monadArgName]
+	    (NormalC funcName [(NotStrict, ArrowT `AppT` theTy `AppT` (VarT mName `AppT` VarT monadArgName))]) []] ++ pragmas ++ [
 	    FunD 'runUnpackedReaderT
 	      [Clause [ConP funcName [VarP fName], VarP argName]
 		(NormalB (VarE fName `AppE` VarE argName)) []],
diff --git a/unpack-funcs.cabal b/unpack-funcs.cabal
--- a/unpack-funcs.cabal
+++ b/unpack-funcs.cabal
@@ -1,5 +1,5 @@
 name:		     unpack-funcs
-version:             0.3.0
+version:             0.3.1
 cabal-version:       >= 1.6
 tested-with:	     GHC
 category:            Control
