diff --git a/Rlang-QQ.cabal b/Rlang-QQ.cabal
--- a/Rlang-QQ.cabal
+++ b/Rlang-QQ.cabal
@@ -1,5 +1,5 @@
 name: Rlang-QQ
-version: 0.2.0.0
+version: 0.2.1.0
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -18,7 +18,7 @@
              > R --no-save <<< 'install.packages("knitr")'
 category: Development
 author: Adam Vogt <vogt.adam@gmail.com>
-tested-with: GHC == 7.6.2, GHC == 7.8-RC1
+tested-with: GHC == 7.6.2, GHC == 7.8.2
 data-dir: rsrc
 data-files: Tree.R parseTreeExample.R
 extra-source-files: examples/*.hs,
@@ -53,18 +53,23 @@
                         PolyKinds
                         TemplateHaskell
                         UndecidableInstances
+                        CPP
     if (impl(ghc > 7.7))
       default-extensions: AllowAmbiguousTypes
 
     build-depends: base ==4.*, containers,
                    template-haskell <= 3, directory, process,
-                   trifecta ==1.*, utf8-string ==0.3.*, bytestring,
-                   Cabal, syb, mtl, MaybeT,
+                   trifecta >= 1.4, utf8-string ==0.3.*, bytestring,
+                   Cabal, syb, mtl, transformers,
                    binary, vector, HList >= 0.3.4, temporary,
-                   text, array, zlib, repa,
+                   text, array, zlib,
                    filepath, split,
                    haskell-src-meta
 
+    if flag(repa)
+      build-depends: repa
+      cpp-options: -DREPA
+
     exposed-modules: RlangQQ.Internal
                      RlangQQ.Binary
                      RlangQQ.Antiquote
@@ -79,6 +84,10 @@
 
     exposed: True
     buildable: True
+
+flag repa
+  description: enable repa (can be disabled to allow building RlangQQ with ghc-7.8)
+  default: True
  
 test-suite doctests
   type:          exitcode-stdio-1.0
diff --git a/src/RlangQQ/Binary.hs b/src/RlangQQ/Binary.hs
--- a/src/RlangQQ/Binary.hs
+++ b/src/RlangQQ/Binary.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
 {-# LANGUAGE TemplateHaskell #-}
@@ -55,7 +56,10 @@
 import Data.Text.Encoding as E
 
 import Control.Monad.Identity
+
+#if REPA
 import qualified Data.Array.Repa as R
+#endif
 
 import GHC.TypeLits
 
@@ -555,6 +559,7 @@
         (254 :: Int32) <- get
         return (A.listArray (fromIxSize bds) els)
 
+#if REPA
 toRDSRepaArr b putFn arr =
     let nel = R.size (R.extent arr) in
       toRDSArray
@@ -593,6 +598,7 @@
     fromRDS = do
         (524 :: Int32) <- get
         fromRDSRepa get
+#endif
 
 
 data AnyRDS where AnyRDS :: (ToRDS a) => a -> AnyRDS
diff --git a/src/RlangQQ/Internal.hs b/src/RlangQQ/Internal.hs
--- a/src/RlangQQ/Internal.hs
+++ b/src/RlangQQ/Internal.hs
@@ -23,7 +23,7 @@
 import qualified Data.ByteString.Lazy.Char8 as B8
 
 import Control.Monad.State
-import Control.Monad.Maybe
+import Control.Monad.Trans.Maybe
 import Data.Generics
 import qualified Data.Traversable as T
 import qualified Data.Map as M
