diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 
 Arrowp-qq
 ==========
-A preprocessor for arrow notation packaged by Jose Iborra,
+A preprocessor for arrow notation 
 based on the arrowp preprocessor developed by Ross Paterson <ross@soi.city.ac.uk>.
 
 Notable features include support for GHC Haskell syntax and a
diff --git a/arrowp-qq.cabal b/arrowp-qq.cabal
--- a/arrowp-qq.cabal
+++ b/arrowp-qq.cabal
@@ -1,5 +1,5 @@
 Name:           arrowp-qq
-Version:        0.2
+Version:        0.2.0.1
 Cabal-Version:  >= 1.20
 Build-Type:     Simple
 License:        GPL
@@ -31,13 +31,11 @@
                          Control.Arrow.Notation,
                          Control.Arrow.QuasiQuoter
     Build-Depends: base < 5,
-                   array,
                    containers,
                    data-default,
                    haskell-src-exts,
                    haskell-src-exts-util,
                    haskell-src-meta,
-                   syb,
                    template-haskell < 2.13, 
                    transformers,
                    uniplate
diff --git a/src/ArrCode.hs b/src/ArrCode.hs
--- a/src/ArrCode.hs
+++ b/src/ArrCode.hs
@@ -8,19 +8,39 @@
 {-# LANGUAGE UndecidableInstances #-}
 {-# OPTIONS_GHC -fno-warn-name-shadowing #-}
 
-module ArrCode (
-      Arrow,
-      bind, anon,
-      arr, arrLet, (>>>), arrowExp, applyOp, infixOp, (|||), first,
-      VarDecl(VarDecl), letCmd,
-      context, anonArgs, toHaskell,
-      Tuple(..),
-      isEmptyTuple, unionTuple, minusTuple, intersectTuple,
-      patternTuple, expTuple,
-      returnA_exp, arr_exp, compose_op, choice_op, first_exp,
-      left_exp, right_exp, app_exp, loop_exp,
-      ifte, app, loop, returnA
-      ) where
+module ArrCode
+  ( Arrow
+  , bind
+  , anon
+  , arr
+  , arrLet
+  , (>>>)
+  , arrowExp
+  , infixOp
+  , (|||)
+  , first
+  , VarDecl
+  , context
+  , anonArgs
+  , toHaskell
+  , Tuple(..)
+  , isEmptyTuple
+  , intersectTuple
+  , patternTuple
+  , expTuple
+  , returnA_exp
+  , arr_exp
+  , compose_op
+  , choice_op
+  , first_exp
+  , left_exp
+  , right_exp
+  , app_exp
+  , loop_exp
+  , ifte
+  , app
+  , loop
+  ) where
 import           Data.Default
 import           Data.Set                     (Set)
 import qualified Data.Set                     as Set
@@ -92,9 +112,8 @@
 loop :: Arrow -> Arrow
 loop f = applyOp loop_exp [f]
 
-app, returnA :: Arrow
+app :: Arrow
 app = arrowExp app_exp
-returnA = arrowExp returnA_exp
 
 bind :: Set (Name S) -> Arrow -> Arrow
 bind = observe "bind" $ \vars a -> a {context = context a `minusTuple` vars}
@@ -168,13 +187,6 @@
   { code = InfixOp (code a1) choice_op (code a2)
   , context = context a1 `unionTuple` context a2
   , anonArgs = 0
-  }
-letCmd :: [VarDecl Arrow] -> Arrow -> Arrow
-letCmd defs a =
-  Arrow
-  { code = Let (map (fmap code) defs) (code a)
-  , context = context a
-  , anonArgs = anonArgs a
   }
 
 compose :: Code -> Code -> Code
diff --git a/src/Utils.hs b/src/Utils.hs
--- a/src/Utils.hs
+++ b/src/Utils.hs
@@ -9,9 +9,29 @@
 {-# LANGUAGE TypeFamilies        #-}
 {-# OPTIONS_GHC -fno-warn-name-shadowing -Wno-orphans #-}
 module Utils
-  ( module Utils
-  , HSE.Located(..)
+  ( HSE.Located(..)
+  , S(..)
   , HSE.rebracket1
+  , freeVars
+  , freeVarss
+  , definedVars
+  , hidePat
+  , irrPat
+  , left, right
+  , pair
+  , pairP
+  , same
+  , times
+  , app_exp
+  , arr_exp
+  , first_exp
+  , left_exp, right_exp
+  , loop_exp
+  , returnA_exp
+  , choice_op
+  , compose_op
+  , returnCmd
+  , observeSt
   )where
 
 import           Control.Monad
