diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+## Version 0.5.2 (2018-02-05)
+
+- Add doc explaining use of `withTests 1` ([#134][134], [@chris-martin][chris-martin])
+- Explicitly define `Semigroup` instance for `Summary` ([#142][142], [@gwils][gwils])
+- Depend on `semigroups` ([#140][140], [@LightAndLight][LightAndLight])
+- Support `transformers-0.4` ([#150][150], [@gwils][gwils])
+
 ## Version 0.5.1 (2017-12-06)
 
 - Only invoke `setNumCapabilities` when using the `-threaded` runtime ([#130][130], [@ekmett][ekmett])
@@ -67,7 +74,19 @@
   https://github.com/ekmett
 [markhibberd]:
   https://github.com/markhibberd
+[gwils]:
+  https://github.com/gwils
+[LightAndLight]:
+  https://github.com/LightAndLight
 
+[150]:
+  https://github.com/hedgehogqa/haskell-hedgehog/pull/150
+[142]:
+  https://github.com/hedgehogqa/haskell-hedgehog/pull/142
+[140]:
+  https://github.com/hedgehogqa/haskell-hedgehog/pull/140
+[134]:
+  https://github.com/hedgehogqa/haskell-hedgehog/pull/134
 [130]:
   https://github.com/hedgehogqa/haskell-hedgehog/pull/130
 [124]:
diff --git a/hedgehog.cabal b/hedgehog.cabal
--- a/hedgehog.cabal
+++ b/hedgehog.cabal
@@ -1,4 +1,4 @@
-version: 0.5.1
+version: 0.5.2
 
 name:
   hedgehog
@@ -34,6 +34,9 @@
   , GHC == 7.10.3
   , GHC == 8.0.1
   , GHC == 8.0.2
+  , GHC == 8.2.1
+  , GHC == 8.2.2
+  , GHC == 8.4.1
 extra-source-files:
   README.md
   CHANGELOG.md
@@ -45,7 +48,7 @@
 library
   build-depends:
       base                            >= 3          && < 5
-    , ansi-terminal                   >= 0.6        && < 0.8
+    , ansi-terminal                   >= 0.6        && < 0.9
     , async                           >= 2.0        && < 2.2
     , bytestring                      >= 0.10       && < 0.11
     , concurrent-output               >= 1.7        && < 1.11
@@ -59,20 +62,17 @@
     , pretty-show                     >= 1.6        && < 1.7
     , primitive                       >= 0.6        && < 0.7
     , random                          >= 1.1        && < 1.2
-    , resourcet                       >= 1.1        && < 1.2
+    , resourcet                       >= 1.1        && < 1.3
+    , semigroups                      >= 0.16       && < 0.19
     , stm                             >= 2.4        && < 2.5
-    , template-haskell                >= 2.10       && < 2.13
+    , template-haskell                >= 2.10       && < 2.14
     , text                            >= 1.1        && < 1.3
     , th-lift                         >= 0.7        && < 0.8
     , time                            >= 1.4        && < 1.9
-    , transformers                    >= 0.5        && < 0.6
+    , transformers                    >= 0.4        && < 0.6
     , transformers-base               >= 0.4        && < 0.5
     , wl-pprint-annotated             >= 0.0        && < 0.2
 
-  if impl(ghc < 8.0)
-    build-depends:
-      semigroups                      >= 0.16       && < 0.19
-
   if !os(windows)
     build-depends:
       unix                            >= 2.6        && < 2.8
@@ -131,9 +131,6 @@
     , base                            >= 3          && < 5
     , containers                      >= 0.4        && < 0.6
     , pretty-show                     >= 1.6        && < 1.7
+    , semigroups                      >= 0.16       && < 0.19
     , text                            >= 1.1        && < 1.3
     , transformers                    >= 0.3        && < 0.6
-
-  if impl(ghc < 8.0)
-    build-depends:
-      semigroups                      >= 0.16       && < 0.19
diff --git a/src/Hedgehog/Internal/Property.hs b/src/Hedgehog/Internal/Property.hs
--- a/src/Hedgehog/Internal/Property.hs
+++ b/src/Hedgehog/Internal/Property.hs
@@ -731,6 +731,10 @@
 -- | Set the number times a property should be executed before it is considered
 --   successful.
 --
+--   If you have a test that does not involve any generators and thus does not
+--   need to run repeatedly, you can use @withTests 1@ to define a property that
+--   will only be checked once.
+--
 withTests :: TestLimit -> Property -> Property
 withTests n =
   mapConfig $ \config -> config { propertyTestLimit = n }
diff --git a/src/Hedgehog/Internal/Report.hs b/src/Hedgehog/Internal/Report.hs
--- a/src/Hedgehog/Internal/Report.hs
+++ b/src/Hedgehog/Internal/Report.hs
@@ -162,7 +162,8 @@
       (x4 + y4)
       (x5 + y5)
 
-instance Semigroup Summary
+instance Semigroup Summary where
+  (<>) = mappend
 
 -- | Construct a summary from a single result.
 --
diff --git a/src/Hedgehog/Internal/State.hs b/src/Hedgehog/Internal/State.hs
--- a/src/Hedgehog/Internal/State.hs
+++ b/src/Hedgehog/Internal/State.hs
@@ -1,4 +1,5 @@
 {-# OPTIONS_HADDOCK not-home #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveFoldable #-}
 {-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE DeriveTraversable #-}
@@ -63,7 +64,9 @@
 import           Data.Dynamic (Dynamic, toDyn, fromDynamic, dynTypeRep)
 import           Data.Foldable (traverse_)
 import           Data.Functor.Classes (Eq1(..), Ord1(..), Show1(..))
+#if MIN_VERSION_transformers(0,5,0)
 import           Data.Functor.Classes (eq1, compare1, showsPrec1)
+#endif
 import           Data.Map (Map)
 import qualified Data.Map as Map
 import qualified Data.Maybe as Maybe
@@ -101,6 +104,7 @@
   showsPrec p (Symbolic x) =
     showsPrec p x
 
+#if MIN_VERSION_transformers(0,5,0)
 instance Show1 Symbolic where
   liftShowsPrec _ _ p (Symbolic x) =
     showsPrec p x
@@ -112,7 +116,20 @@
 instance Ord1 Symbolic where
   liftCompare _ (Symbolic x) (Symbolic y) =
     compare x y
+#else
+instance Show1 Symbolic where
+  showsPrec1 p (Symbolic x) =
+    showsPrec p x
 
+instance Eq1 Symbolic where
+  eq1 (Symbolic x) (Symbolic y) =
+    x == y
+
+instance Ord1 Symbolic where
+  compare1 (Symbolic x) (Symbolic y) =
+    compare x y
+#endif
+
 -- | Concrete values.
 --
 newtype Concrete a where
@@ -123,6 +140,7 @@
   showsPrec =
     showsPrec1
 
+#if MIN_VERSION_transformers(0,5,0)
 instance Show1 Concrete where
   liftShowsPrec sp _ p (Concrete x) =
     sp p x
@@ -134,6 +152,19 @@
 instance Ord1 Concrete where
   liftCompare comp (Concrete x) (Concrete y) =
     comp x y
+#else
+instance Show1 Concrete where
+  showsPrec1 p (Concrete x) =
+    showsPrec p x
+
+instance Eq1 Concrete where
+  eq1 (Concrete x) (Concrete y) =
+    x == y
+
+instance Ord1 Concrete where
+  compare1 (Concrete x) (Concrete y) =
+    compare x y
+#endif
 
 ------------------------------------------------------------------------
 
