diff --git a/Data/Dates/Types.hs b/Data/Dates/Types.hs
--- a/Data/Dates/Types.hs
+++ b/Data/Dates/Types.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE UnicodeSyntax, DeriveDataTypeable #-}
+{-# LANGUAGE CPP #-}
 
 module Data.Dates.Types
   (DateTime (..),
@@ -7,6 +8,7 @@
   ) where
 
 import Prelude.Unicode
+import Data.Semigroup
 import Data.Monoid
 import Data.Char
 import Data.Generics
@@ -59,9 +61,8 @@
     tSecond ∷ Int }
   deriving (Eq,Ord,Show,Data,Typeable)
 
-instance Monoid DateTime where
-  mempty = DateTime 0 0 0 0 0 0
-  mappend dt1 dt2 =
+instance Semigroup DateTime where
+  dt1 <> dt2 = 
       DateTime (year dt1   `plus` year dt2)
                (month dt1  `plus` month dt2)
                (day dt1    `plus` day dt2)
@@ -72,4 +73,8 @@
       plus :: Int → Int → Int
       plus 0 x = x
       plus x _ = x
+
+instance Monoid DateTime where
+  mempty = DateTime 0 0 0 0 0 0
+  mappend = (Data.Semigroup.<>)
 
diff --git a/dates.cabal b/dates.cabal
--- a/dates.cabal
+++ b/dates.cabal
@@ -1,5 +1,5 @@
 name:                dates
-version:             0.2.2.1
+version:             0.2.2.2
 synopsis:            Small library for parsing different dates formats.
 description:         This package allows to parse many different formats
                      of dates. Both absolute and relative dates are supported.
@@ -41,7 +41,7 @@
                        Data.Dates.Formats,
                        Data.Dates.Internal
 
-  build-depends:       base >=4 && < 5,
+  build-depends:       base >=4 && < 4.12,
                        base-unicode-symbols ==0.2.*,
                        time >= 1.4,
                        parsec >=3.1,
