diff --git a/qr-imager.cabal b/qr-imager.cabal
--- a/qr-imager.cabal
+++ b/qr-imager.cabal
@@ -1,5 +1,5 @@
 name:                qr-imager
-version:             1.0.1.3
+version:             1.0.1.5
 synopsis:            Library to generate QR codes from bytestrings and objects
 description:         Please see README.md
 homepage:            https://github.com/vmchale/QRImager#readme
@@ -32,9 +32,9 @@
                      , directory
                      , haskell-qrencode
                      , process
-                     , MissingH
                      , optparse-applicative
                      , either < 5
+                     , split
   pkgconfig-depends:   libqrencode
   default-language:    Haskell2010
 
diff --git a/src/Data/QRCodes/Utils.hs b/src/Data/QRCodes/Utils.hs
--- a/src/Data/QRCodes/Utils.hs
+++ b/src/Data/QRCodes/Utils.hs
@@ -2,19 +2,23 @@
 module Data.QRCodes.Utils where
 
 import qualified Data.ByteString.Char8 as BS
-import Data.Char (toLower, toUpper)
-import Data.List.Utils (replace)
-import Data.Word (Word8)
+import           Data.Char             (toLower, toUpper)
+import           Data.List             (intercalate)
+import           Data.List.Split       (splitOn)
+import           Data.Word             (Word8)
 
+replace :: String -> String -> String -> String
+replace ndl target haystack = intercalate target $ splitOn ndl haystack
+
 -- | function applied to byteStrings before saving to QR code so that uppercase/lowercase signatures can be preserverd
 preserveUpper :: BS.ByteString -> BS.ByteString
 preserveUpper = lift pU
-    where pU = concatMap (\c -> if c `elem` ['A'..'Z'] then ((toLower c) : "!") else return c)
+    where pU = concatMap (\c -> if c `elem` ['A'..'Z'] then toLower c : "!" else return c)
 
 -- | resolve coded string to string with uppercase
 resolveUpper :: BS.ByteString -> BS.ByteString
 resolveUpper = lift rU
-    where rU = foldr (.) id (map (\s -> replace (s : "!") ((pure . toUpper) s)) ['a'..'z'])
+    where rU = foldr ((.) . (\s -> replace (s : "!") ((pure . toUpper) s))) id ['a'..'z']
 
 -- | given a function on strings, make it act on byteStrings
 lift :: (String -> String) -> (BS.ByteString -> BS.ByteString)
