diff --git a/Data/CList.hs b/Data/CList.hs
--- a/Data/CList.hs
+++ b/Data/CList.hs
@@ -9,9 +9,10 @@
 import Data.Eq
 import Data.Foldable
 import Data.Functor
-import Data.Monoid
+import Data.Monoid hiding ((<>))
 import Data.Ord
 import Data.Peano
+import Data.Semigroup
 import Data.Traversable
 import Data.Typeable
 
@@ -29,13 +30,18 @@
 deriving instance Traversable (CList n)
 deriving instance Typeable CList
 
-instance Monoid a => Monoid (CList Zero a) where
+instance Semigroup a => Semigroup (CList n a) where
+    Nil <> Nil = Nil
+    (x:.xs) <> (y:.ys) = x<>y:.xs<>ys
+
+instance (Semigroup a, Monoid a) => Monoid (CList Zero a) where
     mempty = Nil
-    Nil `mappend` Nil = Nil
+    mappend = (<>)
 
-instance (Monoid a, Monoid (CList n a)) => Monoid (CList (Succ n) a) where
+instance (Semigroup a, Semigroup (CList n a),
+          Monoid a, Monoid (CList n a)) => Monoid (CList (Succ n) a) where
     mempty = mempty:.mempty
-    (x:.xs) `mappend` (y:.ys) = x<>y:.xs<>ys
+    mappend = (<>)
 
 instance Applicative (CList Zero) where
     pure x = Nil
diff --git a/clist.cabal b/clist.cabal
--- a/clist.cabal
+++ b/clist.cabal
@@ -1,5 +1,5 @@
 name:                clist
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Counted list
 homepage:            https://github.com/strake/clist.hs
 license:             OtherLicense
@@ -9,8 +9,10 @@
 category:            Data
 build-type:          Simple
 cabal-version:       >=1.9.2
+tested-with:         GHC ==8.0.*
+                   , GHC ==8.2.2
 
 library
   exposed-modules:     Data.CList
   extensions:          TypeOperators, FlexibleContexts, FlexibleInstances, GADTs, DataKinds, DeriveFunctor, DeriveFoldable, DeriveTraversable
-  build-depends:       base >=4.8 && <4.9, base-unicode-symbols, peano
+  build-depends:       base >=4.9 && <5, base-unicode-symbols, peano
