diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+- 0.1.3.0
+    - Add `reifyBool` and `reflectBool`.
+    - Drop GHC-7.4 support (broken `PolyKinds`)
+
 - 0.1.2.0
     - Enable `PolyKinds` on GHC >= 7.6
     - Add `sboolEqRefl :: SBoolI (a == b) => Maybe (a :~: b)`
diff --git a/singleton-bool.cabal b/singleton-bool.cabal
--- a/singleton-bool.cabal
+++ b/singleton-bool.cabal
@@ -1,9 +1,5 @@
--- This file has been generated from package.yaml by hpack version 0.14.1.
---
--- see: https://github.com/sol/hpack
-
 name:           singleton-bool
-version:        0.1.2.0
+version:        0.1.3
 synopsis:       Type level booleans
 description:    Type level booleans.
                 .
@@ -16,9 +12,15 @@
 maintainer:     Oleg Grenrus <oleg.grenrus@iki.fi>
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.1
 build-type:     Simple
 cabal-version:  >= 1.10
+tested-with:
+  GHC==7.6.3,
+  GHC==7.8.4,
+  GHC==7.10.3,
+  GHC==8.0.2,
+  GHC==8.2.2,
+  GHC==8.4.1
 
 extra-source-files:
   CHANGELOG.md
@@ -33,7 +35,10 @@
     src
   ghc-options: -Wall
   build-depends:
-    base        >=4.5 && <4.10
+    base        >=4.6 && <4.11
   exposed-modules:
     Data.Singletons.Bool
   default-language: Haskell2010
+
+  if !impl(ghc >= 7.8)
+    build-depends: tagged >= 0.8.5 && <0.9
diff --git a/src/Data/Singletons/Bool.hs b/src/Data/Singletons/Bool.hs
--- a/src/Data/Singletons/Bool.hs
+++ b/src/Data/Singletons/Bool.hs
@@ -2,20 +2,22 @@
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE GADTs               #-}
 {-# LANGUAGE KindSignatures      #-}
+{-# LANGUAGE PolyKinds           #-}
+{-# LANGUAGE RankNTypes          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeOperators       #-}
-#if __GLASGOW_HASKELL__ >= 706
-{-# LANGUAGE PolyKinds           #-}
-#endif
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -Wno-redundant-constraints #-}
 #endif
 #if MIN_VERSION_base(4,7,0)
 {-# LANGUAGE FlexibleContexts #-}
 #endif
+-- | Additions to "Data.Type.Bool".
 module Data.Singletons.Bool (
     SBool(..),
     SBoolI(..),
+    reflectBool,
+    reifyBool,
     -- * Data.Type.Bool and .Equality
     -- | These are only defined with @base >= 4.7@
 #if MIN_VERSION_base(4,7,0)
@@ -31,6 +33,8 @@
 import           Unsafe.Coerce      (unsafeCoerce)
 #endif
 
+import Data.Proxy (Proxy (..))
+
 data SBool (b :: Bool) where
     STrue  :: SBool 'True
     SFalse :: SBool 'False
@@ -38,6 +42,24 @@
 class    SBoolI (b :: Bool) where sbool :: SBool b
 instance SBoolI 'True       where sbool = STrue
 instance SBoolI 'False      where sbool = SFalse
+
+-------------------------------------------------------------------------------
+-- reify & reflect
+-------------------------------------------------------------------------------
+
+-- | Reify 'Bool'.
+--
+-- >>> reifyBool True reflectBool
+-- True
+--
+reifyBool :: forall r. Bool -> (forall b. SBoolI b => Proxy b -> r) -> r
+reifyBool True  f = f (Proxy :: Proxy 'True)
+reifyBool False f = f (Proxy :: Proxy 'False)
+
+reflectBool :: forall b proxy. SBoolI b => proxy b -> Bool
+reflectBool _ = case sbool :: SBool b of
+    STrue  -> True
+    SFalse -> False
 
 -------------------------------------------------------------------------------
 -- Witnesses
