diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/hformat.cabal b/hformat.cabal
--- a/hformat.cabal
+++ b/hformat.cabal
@@ -1,5 +1,5 @@
 name:                hformat
-version:             0.3.1.0
+version:             0.3.2.0
 synopsis:            Simple Haskell formatting
 description: String formatting
 homepage:            http://github.com/mvoidex/hformat
diff --git a/src/Text/Format.hs b/src/Text/Format.hs
--- a/src/Text/Format.hs
+++ b/src/Text/Format.hs
@@ -28,6 +28,7 @@
 import Data.Char (intToDigit)
 import Data.List (find, intercalate, nub)
 import Data.Maybe (fromMaybe, listToMaybe)
+import Data.Semigroup (Semigroup(..))
 import qualified Data.Text as T
 import Data.Text.Lazy (Text, unpack)
 import Data.String
@@ -49,6 +50,9 @@
 
 instance IsString Formatted where
 	fromString = Formatted ∘ return ∘ fromString
+
+instance Semigroup Formatted where
+	Formatted l <> Formatted r = Formatted $ l ++ r
 
 instance Monoid Formatted where
 	mempty = Formatted []
