diff --git a/IPv6Addr.cabal b/IPv6Addr.cabal
--- a/IPv6Addr.cabal
+++ b/IPv6Addr.cabal
@@ -1,5 +1,5 @@
 name:                IPv6Addr
-version:             0.6.0.0
+version:             0.6.0.1
 synopsis:            Library to deal with IPv6 address text representations.
 description:         Library to deal with IPv6 address text representations, canonization and manipulations.
 homepage:            https://github.com/MichelBoucey/IPv6Addr
@@ -13,11 +13,15 @@
 extra-source-files:  README.md
 cabal-version:       >=1.10
 
+Source-Repository head
+  Type: git
+  Location: https://github.com/MichelBoucey/IPv6Addr.git
+
 library
   exposed-modules:     Text.IPv6Addr, Text.IPv6Addr.Types, Text.IPv6Addr.Manip, Text.IPv6Addr.Internal
   -- other-modules:       
   other-extensions:    OverloadedStrings
-  build-depends:       base >=4.7 && <4.8, text >=1.2 && <1.3, iproute >=1.3 && <1.4, network >=2.6 && <2.7, random >=1.1 && <1.2, attoparsec >=0.12 && <0.13, network-info >=0.2 && <0.3
+  build-depends:       base >=4.7 && <4.9, text >=1.2 && <1.3, iproute >=1.3 && <1.4, network >=2.6 && <2.7, random >=1.1 && <1.2, attoparsec >=0.12 && <0.13, network-info >=0.2 && <0.3
   -- hs-source-dirs:      
   default-language:    Haskell2010
 
diff --git a/Text/IPv6Addr.hs b/Text/IPv6Addr.hs
--- a/Text/IPv6Addr.hs
+++ b/Text/IPv6Addr.hs
@@ -34,6 +34,7 @@
 import Control.Applicative (pure,(<$>))
 import Data.IP (IPv6)
 import Data.Maybe (fromJust,isNothing)
+import Data.Monoid ((<>))
 import qualified Data.Text as T
 import Network (HostName)
 import System.Random (randomRIO)
@@ -82,10 +83,10 @@
 --
 toIP6ARPA :: IPv6Addr -> T.Text
 toIP6ARPA a =
-    T.append (T.reverse $ T.concatMap trans $ fromIPv6Addr $ fromJust $ maybeFullIPv6Addr $ fromIPv6Addr a) "IP6.ARPA."
+    T.reverse (T.concatMap trans $ fromIPv6Addr $ fromJust $ maybeFullIPv6Addr $ fromIPv6Addr a) <> "IP6.ARPA."
   where
     trans ':' = T.empty
-    trans c   = T.append "." (T.pack [c])
+    trans c   = "." <> T.pack [c]
 
 -- | Given an 'IPv6Addr', returns the corresponding 'HostName'.
 toHostName :: IPv6Addr -> HostName
diff --git a/Text/IPv6Addr/Internal.hs b/Text/IPv6Addr/Internal.hs
--- a/Text/IPv6Addr/Internal.hs
+++ b/Text/IPv6Addr/Internal.hs
@@ -32,6 +32,7 @@
 import Control.Monad (replicateM)
 import Data.Attoparsec.Text
 import Data.Char (isDigit,isHexDigit,toLower)
+import Data.Monoid ((<>))
 import Control.Applicative ((<|>),(<*))
 import Data.List (group,isSuffixOf,elemIndex,elemIndices,intersperse)
 import Numeric (showHex)
@@ -44,15 +45,15 @@
 
 tok0 = "0"
 
--- | Returns the 'Text' of an IPv6 address.
+-- | Returns the 'T.Text' of an IPv6 address.
 fromIPv6Addr :: IPv6Addr -> T.Text
 fromIPv6Addr (IPv6Addr t) = t
 
--- | Given an arbitrary list of 'IPv6AddrToken', returns the corresponding 'Text'.
+-- | Given an arbitrary list of 'IPv6AddrToken', returns the corresponding 'T.Text'.
 ipv6TokensToText :: [IPv6AddrToken] -> T.Text
 ipv6TokensToText l = T.concat $ map ipv6TokenToText l
 
--- | Returns the corresponding 'Text' of an IPv6 address token.
+-- | Returns the corresponding 'T.Text' of an IPv6 address token.
 ipv6TokenToText :: IPv6AddrToken -> T.Text
 ipv6TokenToText (SixteenBit s) = s 
 ipv6TokenToText Colon = ":"
@@ -138,7 +139,7 @@
   where
     ipv4AddrReplacement ltks' = init ltks' ++ ipv4AddrToIPv6AddrTokens (last ltks')
 
--- | Tokenize a 'Text' into 'Just' a list of 'IPv6AddrToken', or 'Nothing'.
+-- | Tokenize a 'T.Text' into 'Just' a list of 'IPv6AddrToken', or 'Nothing'.
 maybeIPv6AddrTokens :: T.Text -> Maybe [IPv6AddrToken]
 maybeIPv6AddrTokens s = 
     case readText s of
@@ -179,7 +180,7 @@
     tokffff = "ffff"
     tok5efe = "5efe"
 
--- | Rewrites 'Just' an embedded 'IPv4Addr' into the corresponding list of pure 'IPv6Addr' tokens.
+-- | Rewrites an embedded 'IPv4Addr' into the corresponding list of pure 'IPv6Addr' tokens.
 --
 -- > ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"]
 --
@@ -188,13 +189,13 @@
     case t of
         IPv4Addr a -> do
             let m = toHex a
-            [  SixteenBit ((!!) m 0 `T.append` addZero ((!!) m 1))
+            [  SixteenBit ((!!) m 0 <> addZero ((!!) m 1))
              , Colon
-             , SixteenBit ((!!) m 2 `T.append` addZero ((!!) m 3)) ]
+             , SixteenBit ((!!) m 2 <> addZero ((!!) m 3)) ]
         _          -> [t]
       where
         toHex a = map (\x -> T.pack $ showHex (read (T.unpack x)::Int) "") $ T.split (=='.') a
-        addZero d = if T.length d == 1 then tok0 `T.append` d else d
+        addZero d = if T.length d == 1 then tok0 <> d else d
 
 expandTokens :: [IPv6AddrToken] -> [IPv6AddrToken]
 expandTokens = map expandToken
