diff --git a/src/UniqueLogic/ST/TF/Test.hs b/src/UniqueLogic/ST/TF/Test.hs
--- a/src/UniqueLogic/ST/TF/Test.hs
+++ b/src/UniqueLogic/ST/TF/Test.hs
@@ -10,6 +10,7 @@
 import Control.Monad.ST (ST, runST, )
 import Control.Monad (join, liftM2, )
 import Data.Monoid (Monoid(mempty, mappend))
+import Data.Semigroup (Semigroup, (<>), )
 
 import Data.List (sortBy, )
 import Data.Ord.HT (comparing, )
@@ -25,9 +26,12 @@
 
 newtype Check s = Check {runCheck :: s Bool}
 
+instance (Monad s) => Semigroup (Check s) where
+   Check x <> Check y = Check $ liftM2 (&&) x y
+
 instance (Monad s) => Monoid (Check s) where
    mempty = Check $ return True
-   mappend (Check x) (Check y) = Check $ liftM2 (&&) x y
+   mappend = (<>)
 
 {-
 Take a system of six equations and seven variables
diff --git a/unique-logic-tf.cabal b/unique-logic-tf.cabal
--- a/unique-logic-tf.cabal
+++ b/unique-logic-tf.cabal
@@ -1,5 +1,5 @@
 Name:             unique-logic-tf
-Version:          0.5.0.1
+Version:          0.5.0.2
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann
@@ -66,7 +66,7 @@
   Changes.md
 
 Source-Repository this
-  Tag:         0.5.0.1
+  Tag:         0.5.0.2
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/unique-logic-tf/
 
@@ -110,4 +110,5 @@
     non-empty >=0.0 && <0.4,
     transformers,
     utility-ht,
+    semigroups,
     base
