diff --git a/euler-tour-tree.cabal b/euler-tour-tree.cabal
--- a/euler-tour-tree.cabal
+++ b/euler-tour-tree.cabal
@@ -1,11 +1,11 @@
 name:                euler-tour-tree
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Euler tour trees
 -- description:         Cf README file
 homepage:            https://github.com/k0ral/euler-tour-tree
 license:             PublicDomain
-author:              koral
-maintainer:          koral@mailoo.org
+author:              chahine.moreau@gmail.com
+maintainer:          chahine.moreau@gmail.com
 category:            Data
 build-type:          Simple
 -- extra-source-files:  ChangeLog.md
@@ -27,7 +27,7 @@
   exposed-modules:
     Data.EulerTourTree
     -- Data.EulerTourTree.Sized
-  build-depends:       base >=4.9 && <4.11, containers, fingertree, mtl, parser-combinators, transformers, Unique
+  build-depends:       base >=4.11 && <4.12, containers, fingertree, mtl, parser-combinators, transformers, Unique
   hs-source-dirs:      src
   default-language:    Haskell2010
 
diff --git a/src/Data/EulerTourTree.hs b/src/Data/EulerTourTree.hs
--- a/src/Data/EulerTourTree.hs
+++ b/src/Data/EulerTourTree.hs
@@ -75,14 +75,16 @@
 
 deriving instance Show node => Show (EulerTourMonoid node)
 
-instance Ord node => Monoid (EulerTourMonoid node) where
-  mempty = EulerTourMonoid mempty mempty mempty mempty mempty
-  EulerTourMonoid a b c d e `mappend` EulerTourMonoid a' b' c' d' e' = result where
+instance Ord node => Semigroup (EulerTourMonoid node) where
+  EulerTourMonoid a b c d e <> EulerTourMonoid a' b' c' d' e' = result where
     result = EulerTourMonoid (a <> a') (b <> bMiddle <> b') (c <> c') (d <> d') (e <> e')
     bMiddle = fromMaybe mempty $ do
       l <- getLast c
       f <- getFirst a'
       return $ Set.singleton (min l f, max l f)
+
+instance Ord node => Monoid (EulerTourMonoid node) where
+  mempty = EulerTourMonoid mempty mempty mempty mempty mempty
 
 instance Ord node => Measured (EulerTourMonoid node) (EulerTourNode node) where
   measure (EulerTourNode node) = EulerTourMonoid (pure node) mempty (pure node) (Set.singleton node) (pure 1)
