diff --git a/Data/String/Conversions.hs b/Data/String/Conversions.hs
--- a/Data/String/Conversions.hs
+++ b/Data/String/Conversions.hs
@@ -1,4 +1,4 @@
-{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances #-}
+{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances, CPP #-}
 
 -- | A type class for converting strings.
 -- Supported types are:
@@ -13,11 +13,29 @@
 --
 --     * lazy 'Data.Text.Lazy.Text'
 --
--- Assumes UTF-8.
+-- Assumes UTF-8 encoding for both types of ByteStrings.
 
-module Data.String.Conversions where
+module Data.String.Conversions (
+    -- * class and conversions
+    ConvertibleStrings(..),
+    cs,
 
+    -- * type synonyms
+    StrictByteString,
+    SBS,
+    LazyByteString,
+    LBS,
+    StrictText,
+    ST,
+    LazyText,
+    LT,
 
+    -- | Generic string concatenation (with ghc >= 7.4 this is a re-export from Data.Monoid
+    -- to avoid clashes.)
+    (<>),
+  ) where
+
+
 import Data.Monoid
 
 import Control.Applicative
@@ -31,10 +49,11 @@
 import qualified Data.ByteString.Lazy.UTF8
 
 import qualified Data.Text
-import qualified Data.Text.Encoding
+import qualified Data.Text.Encoding hiding (decodeUtf8)
+import qualified Data.Text.Encoding.Error
 
 import qualified Data.Text.Lazy
-import qualified Data.Text.Lazy.Encoding
+import qualified Data.Text.Lazy.Encoding hiding (decodeUtf8)
 
 
 -- * class and conversions
@@ -45,6 +64,10 @@
 cs :: ConvertibleStrings a b => a -> b
 cs = convertString
 
+#if !MIN_VERSION_base(4,5,0)
+(<>) :: Monoid s => s -> s -> s
+(<>) = mappend
+#endif
 
 -- * type synonyms
 
@@ -88,11 +111,12 @@
     convertString = Data.ByteString.Lazy.fromChunks . pure
 
 instance ConvertibleStrings StrictByteString StrictText where
-    convertString = Data.Text.Encoding.decodeUtf8
+    convertString = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
 
 instance ConvertibleStrings StrictByteString LazyText where
     convertString =
-        Data.Text.Lazy.Encoding.decodeUtf8 . Data.ByteString.Lazy.fromChunks . pure
+        Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode .
+        Data.ByteString.Lazy.fromChunks . pure
 
 
 -- from LazyByteString
@@ -104,10 +128,12 @@
     convertString = mconcat . Data.ByteString.Lazy.toChunks
 
 instance ConvertibleStrings LazyByteString StrictText where
-    convertString = Data.Text.Encoding.decodeUtf8 . mconcat . Data.ByteString.Lazy.toChunks
+    convertString =
+        Data.Text.Encoding.decodeUtf8With  Data.Text.Encoding.Error.lenientDecode .
+        mconcat . Data.ByteString.Lazy.toChunks
 
 instance ConvertibleStrings LazyByteString LazyText where
-    convertString = Data.Text.Lazy.Encoding.decodeUtf8
+    convertString = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
 
 
 -- from StrictText
diff --git a/string-conversions.cabal b/string-conversions.cabal
--- a/string-conversions.cabal
+++ b/string-conversions.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                string-conversions
-version:             0.1
+version:             0.2
 synopsis:            Simplifies dealing with different types for strings
 description:         Provides a simple type class for converting values
                      of different string types
