diff --git a/fadno.cabal b/fadno.cabal
--- a/fadno.cabal
+++ b/fadno.cabal
@@ -1,7 +1,7 @@
 name:                fadno
 category:            Music
 synopsis:            Minimal library for music generation and notation
-version:             1.1.0
+version:             1.1.2
 homepage:            http://github.com/slpopejoy/fadno
 description:         Provides the Note type and HasNote class with polymorphic pitch and duration representations,
                      metering, barring and time signature utilities, plus midi and MusicXML support.
@@ -27,26 +27,26 @@
 
   -- other-modules:
   -- other-extensions:
-  build-depends:       Decimal == 0.4.*
-                     , HUnit == 1.5.*
-                     , base == 4.9.*
-                     , containers == 0.5.*
-                     , comonad == 5.*
-                     , data-default == 0.7.*
-                     , deepseq == 1.4.*
-                     , event-list == 0.1.*
-                     , fadno-braids == 0.1.*
-                     , fadno-xml == 1.1.*
-                     , lens == 4.15.*
-                     , midi == 0.2.*
-                     , mtl == 2.2.*
-                     , process == 1.4.*
-                     , safe == 0.3.*
-                     , split == 0.2.*
-                     , text == 1.2.*
-                     , unordered-containers == 0.2.*
-                     , vector == 0.12.*
-                     , xml == 1.3.*
+  build-depends:       Decimal >= 0.4
+                     , HUnit >= 1.5
+                     , base >= 4.9 && < 4.13
+                     , containers >= 0.5
+                     , comonad >= 5 
+                     , data-default >= 0.7
+                     , deepseq >= 1.4 
+                     , event-list >= 0.1
+                     , fadno-braids >= 0.1
+                     , fadno-xml >= 1.1
+                     , lens >= 4.15 
+                     , midi >= 0.2
+                     , mtl >= 2.2 
+                     , process >= 1.4
+                     , safe >= 0.3
+                     , split >= 0.2
+                     , text >= 1.2
+                     , unordered-containers >= 0.2 
+                     , vector >= 0.12 
+                     , xml >= 1.3 
   hs-source-dirs: src
   default-language:    Haskell2010
 
diff --git a/src/Fadno/Meter.hs b/src/Fadno/Meter.hs
--- a/src/Fadno/Meter.hs
+++ b/src/Fadno/Meter.hs
@@ -3,6 +3,8 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE AllowAmbiguousTypes #-}
+
 module Fadno.Meter where
 
 import Fadno.Notation
@@ -42,7 +44,7 @@
          TimeSignature -> b n -> [c m]
 rebar ts = reverse . fixup . foldl' go [mempty] . fmap fromNote where
     tslen = tsToRatio ts
-    go [] _ = error "impossible"
+    go bss@[] _ = bss -- error case but might as well be total
     go bss@(b:bs) n | barlen == tslen = go (mempty:bss) n
                     | newBarLen <= tslen = (b |> n):bs
                     | otherwise = {- trace1' "otherwise" (remaining, ndur) $ -} go ((b |> pre):bs) post
diff --git a/src/Fadno/Notation.hs b/src/Fadno/Notation.hs
--- a/src/Fadno/Notation.hs
+++ b/src/Fadno/Notation.hs
@@ -127,7 +127,7 @@
 
 -- | Bar rehearsal mark.
 newtype RehearsalMark = RehearsalMark { _rehearsalText :: String }
-    deriving (Eq,Ord,IsString,Generic,Monoid,Default)
+    deriving (Eq,Ord,IsString,Generic,Semigroup,Monoid,Default)
 makeLenses ''RehearsalMark
 instance Show RehearsalMark where show = show . _rehearsalText
 class HasRehearsalMark a where rehearsalMark :: Lens' a (Maybe RehearsalMark)
@@ -135,7 +135,7 @@
 
 -- | Musical direction.
 newtype Direction = Direction { _directionText :: String }
-    deriving (Eq,Ord,IsString,Generic,Monoid,Default)
+    deriving (Eq,Ord,IsString,Generic,Semigroup,Monoid,Default)
 makeLenses ''Direction
 instance Show Direction where show = show . _directionText
 class HasDirection a where direction :: Lens' a (Maybe Direction)
@@ -243,9 +243,10 @@
              ,mshow timeSignature "timeSignature"
              ,mshow clef "clef"
              ]
+instance Semigroup (Bar n) where
+    a <> b = over bNotes (<> view bNotes b) a
 instance Monoid (Bar n) where
     mempty = def
-    a `mappend` b = over bNotes (`mappend` view bNotes b) a
 
 -- | Bar smart ctor, used in 'Show'.
 bar :: [n] -> Bar n
diff --git a/src/Fadno/Note.hs b/src/Fadno/Note.hs
--- a/src/Fadno/Note.hs
+++ b/src/Fadno/Note.hs
@@ -73,11 +73,12 @@
     show (M p) = "M " ++ show p
 makeLenses ''Mono
 makePrisms ''Mono
+instance Num p => Semigroup (Mono p) where
+    Rest <> b = b
+    a <> Rest = a
+    (M a) <> (M b) = M (a + b)
 instance Num p => Monoid (Mono p) where
     mempty = Rest
-    mappend Rest b = b
-    mappend a Rest = a
-    mappend (M a) (M b) = M (a + b)
 -- | Mono/Maybe isomorphism.
 maybeMono :: Iso' (Maybe a) (Mono a)
 maybeMono = iso toMono toMaybe
