diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,10 @@
+# 1.5.1
+* We no longer export Show (Q a) for GHC >= 7.4. This was causing random hangs when users tried to somehow run declaration splices from the REPL.
+* We no longer depend on tagged for GHC >= 7.8, since `Proxy` is now in `base`.
+
+# 1.5
+* Added a flag to disable `template-haskell` support for GHC stage1 platforms.
+* Added instances of `Reifies` for `GHC.TypeLits`
 
 # 1.4
 * Changed the behavior of the $(1) template haskell splices for Exp to use a Proxy rather than value-level numbers. This is more consistent with the role of this libraary and the other could always be generated via sa splice anyways.
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -1,7 +1,7 @@
 reflection
 ==========
 
-[![Build Status](https://secure.travis-ci.org/ekmett/reflection.png?branch=master)](http://travis-ci.org/ekmett/reflecton)
+[![Build Status](https://secure.travis-ci.org/ekmett/reflection.png?branch=master)](http://travis-ci.org/ekmett/reflection)
 
 This package provides an implementation of the ideas presented in [Functional Pearl: Implicit Configurations](http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf) by Oleg Kiselyov and Chung-Chieh Shan. However, the API has been implemented in a much more efficient manner.
 
diff --git a/fast/Data/Reflection.hs b/fast/Data/Reflection.hs
--- a/fast/Data/Reflection.hs
+++ b/fast/Data/Reflection.hs
@@ -1,19 +1,22 @@
-{-# LANGUAGE PatternGuards #-}
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE EmptyDataDecls #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PatternGuards #-}
 {-# LANGUAGE Rank2Types #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE EmptyDataDecls #-}
-{-# LANGUAGE TemplateHaskell #-}
 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE TypeOperators #-}
 #define USE_TYPE_LITS 1
 #endif
+#ifdef TEMPLATE_HASKELL
+{-# LANGUAGE TemplateHaskell #-}
+#endif
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 ----------------------------------------------------------------------------
 -- |
@@ -58,21 +61,25 @@
     -- * Given
     , Given(..)
     , give
+#ifdef TEMPLATE_HASKELL
     -- * Template Haskell reflection
     , int, nat
+#endif
     -- * Useful compile time naturals
     , Z, D, SD, PD
     ) where
 
-import Control.Monad
 import Data.Functor
 import Data.Proxy
 
-#ifdef USE_TYPE_LITS
+#if (defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707) || (TEMPLATE_HASKELL && USE_TYPE_LITS)
 import GHC.TypeLits
 #endif
 
+#ifdef TEMPLATE_HASKELL
 import Language.Haskell.TH hiding (reify)
+import Control.Monad
+#endif
 
 #ifdef __HUGS__
 import Hugs.IOExts
@@ -80,7 +87,6 @@
 import Unsafe.Coerce
 #endif
 
-
 ------------------------------------------------------------------------------
 -- Reifies
 ------------------------------------------------------------------------------
@@ -97,6 +103,14 @@
 reify a k = unsafeCoerce (Magic k :: Magic a r) (const a) Proxy
 {-# INLINE reify #-}
 
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+instance KnownNat n => Reifies n Integer where
+  reflect = natVal
+
+instance KnownSymbol n => Reifies n String where
+  reflect = symbolVal
+#endif
+
 ------------------------------------------------------------------------------
 -- Given
 ------------------------------------------------------------------------------
@@ -152,6 +166,7 @@
   reflect = (\n -> n + n - 1) <$> retagPD reflect
   {-# INLINE reflect #-}
 
+#ifdef TEMPLATE_HASKELL
 -- | This can be used to generate a template haskell splice for a type level version of a given 'int'.
 --
 -- This does not use GHC TypeLits, instead it generates a numeric type by hand similar to the ones used
@@ -177,9 +192,11 @@
   | n >= 0 = int n
   | otherwise = error "nat: negative"
 
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL < 704
-instance Show (Q a)
-instance Eq (Q a)
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ < 704
+instance Show (Q a) where
+  show _ = "Q"
+instance Eq (Q a) where
+  _ == _ = False
 #endif
 instance Num a => Num (Q a) where
   (+) = liftM2 (+)
@@ -223,7 +240,6 @@
   abs = error "Type.abs"
   signum = error "Type.signum"
 
-
 onProxyType1 :: (Type -> Type) -> (Exp -> Exp)
 onProxyType1 f
     (SigE _ ta@(AppT (ConT proxyName)  (VarT _)))
@@ -275,4 +291,6 @@
 mulProxy _ _ = error "Exp.(*): undefined"
 subProxy :: Proxy a -> Proxy b -> Proxy c
 subProxy _ _ = error "Exp.(-): undefined"
+#endif
+
 #endif
diff --git a/reflection.cabal b/reflection.cabal
--- a/reflection.cabal
+++ b/reflection.cabal
@@ -1,5 +1,5 @@
 name:           reflection
-version:        1.4
+version:        1.5.1
 license:        BSD3
 license-file:   LICENSE
 author:         Edward A. Kmett, Elliott Hird, Oleg Kiselyov and Chung-chieh Shan
@@ -44,6 +44,10 @@
   default: False
   manual: False
 
+flag th
+  default: True
+  manual: True
+
 source-repository head
   type: git
   location: git://github.com/ekmett/reflection.git
@@ -55,11 +59,17 @@
     default-extensions: Trustworthy
 
   build-depends:
-    base >= 2 && < 5,
-    tagged >= 0.4.4 && < 1,
-    template-haskell
+    base >= 2 && < 5
 
+  if impl(ghc < 7.8)
+    build-depends:
+      tagged >= 0.4.4 && < 1
+
   default-language: Haskell98
+
+  if flag(th) && impl(ghc)
+    cpp-options: -DTEMPLATE_HASKELL
+    build-depends: template-haskell
 
   if !flag(slow) && (impl(ghc) || impl(hugs))
     hs-source-dirs: fast
