diff --git a/gitHUD.cabal b/gitHUD.cabal
--- a/gitHUD.cabal
+++ b/gitHUD.cabal
@@ -1,5 +1,5 @@
 name:                gitHUD
-version:             1.3.3
+version:             1.3.4
 synopsis:            More efficient replacement to the great git-radar
 description:         Please see README.md
 homepage:            http://github.com/gbataille/gitHUD#readme
@@ -34,6 +34,7 @@
                     , process
                     , parsec >= 3.1.9 && < 4
                     , mtl >= 2.2.1 && < 3
+                    , text >= 1.2 && < 1.3
                     , unix >= 2.7 && < 3
   default-language:   Haskell2010
 
diff --git a/src/GitHUD.hs b/src/GitHUD.hs
--- a/src/GitHUD.hs
+++ b/src/GitHUD.hs
@@ -1,9 +1,12 @@
+{-# LANGUAGE OverloadedStrings #-}
+
 module GitHUD (
     githud
     ) where
 
 import Control.Monad (when)
 import Control.Monad.Reader (runReader)
+import Data.Text
 import System.Environment (getArgs)
 import System.Posix.Files (fileExist)
 import System.Posix.User (getRealUserID, getUserEntryForID, UserEntry(..))
@@ -27,13 +30,13 @@
     let prompt = runReader buildPromptWithConfig $ buildOutputConfig shell repoState config
 
     -- Necessary to use putStrLn to properly terminate the output (needs the CR)
-    putStrLn prompt
+    putStrLn $ unpack (strip (pack prompt))
 
 processArguments :: IO [String]
                  -> IO Shell
 processArguments args = do
   arguments <- args
-  if (not (null arguments)) && ((head arguments) == "zsh")
+  if (not (Prelude.null arguments)) && ((Prelude.head arguments) == "zsh")
     then return ZSH
     else return Other
 
diff --git a/src/GitHUD/Terminal/Base.hs b/src/GitHUD/Terminal/Base.hs
--- a/src/GitHUD/Terminal/Base.hs
+++ b/src/GitHUD/Terminal/Base.hs
@@ -65,4 +65,4 @@
 terminalStartCode  NoColor  _      = terminalEndCode
 
 terminalEndCode :: String
-terminalEndCode = "\x1b[0m"
+terminalEndCode = "\x1b[39m"
diff --git a/test/Test/GitHUD/Terminal/Prompt.hs b/test/Test/GitHUD/Terminal/Prompt.hs
--- a/test/Test/GitHUD/Terminal/Prompt.hs
+++ b/test/Test/GitHUD/Terminal/Prompt.hs
@@ -30,9 +30,9 @@
 testResetPromptAtBeginning :: TestTree
 testResetPromptAtBeginning = testGroup "#resetPromptAtBeginning"
  [   testCase "Should start the prompt with a reset color control sequence" $
-       testWriterWithConfig (zeroOutputConfig ZSH) resetPromptAtBeginning @?= "%{\x1b[0m%}"
+       testWriterWithConfig (zeroOutputConfig ZSH) resetPromptAtBeginning @?= "%{\x1b[39m%}"
    , testCase "Should start the prompt with a reset color control sequence" $
-       testWriterWithConfig (zeroOutputConfig Other) resetPromptAtBeginning @?= "\x1b[0m"
+       testWriterWithConfig (zeroOutputConfig Other) resetPromptAtBeginning @?= "\x1b[39m"
  ]
 
 testAddGitRepoIndicator :: TestTree
@@ -87,12 +87,12 @@
       , testCase "ZSH: with no upstream" $
           testWriterWithConfig
             (zeroOutputConfig ZSH) addNoTrackedUpstreamIndicator
-          @?= "%{\x1b[1;31m%}upstream%{\x1b[0m%} %{\x1b[1;31m%}\9889%{\x1b[0m%} "
+          @?= "%{\x1b[1;31m%}upstream%{\x1b[39m%} %{\x1b[1;31m%}\9889%{\x1b[39m%} "
 
       , testCase "Other: with no upstream" $
           testWriterWithConfig
             (zeroOutputConfig Other) addNoTrackedUpstreamIndicator
-          @?= "\x1b[1;31mupstream\x1b[0m \x1b[1;31m\9889\x1b[0m "
+          @?= "\x1b[1;31mupstream\x1b[39m \x1b[1;31m\9889\x1b[39m "
       ]
     , testGroup "Custom Config"
       [ testCase "ZSH: with an upstream" $
@@ -111,13 +111,13 @@
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState) customConfigNoTrackedUpstreamIndicator)
             addNoTrackedUpstreamIndicator
-          @?= "%{\x1b[36m%}foo%{\x1b[0m%} %{\x1b[32m%}bar%{\x1b[0m%} "
+          @?= "%{\x1b[36m%}foo%{\x1b[39m%} %{\x1b[32m%}bar%{\x1b[39m%} "
 
       , testCase "Other: with no upstream" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState) customConfigNoTrackedUpstreamIndicator)
             addNoTrackedUpstreamIndicator
-          @?= "\x1b[36mfoo\x1b[0m \x1b[32mbar\x1b[0m "
+          @?= "\x1b[36mfoo\x1b[39m \x1b[32mbar\x1b[39m "
       ]
   ]
 
@@ -134,53 +134,53 @@
   [ testGroup "Default Config"
     [ testCase "ZSH: commits to pull" $
         testMergeBranchCommitsToPull ZSH defaultConfig @?=
-        "\120366 %{\x1b[1;32m%}\8594%{\x1b[0m%} 2 "
+        "\120366 %{\x1b[1;32m%}\8594%{\x1b[39m%} 2 "
 
     , testCase "ZSH: commits to push" $
         testMergeBranchCommitsToPush ZSH defaultConfig @?=
-        "\120366 %{\x1b[1;32m%}\8592%{\x1b[0m%} 2 "
+        "\120366 %{\x1b[1;32m%}\8592%{\x1b[39m%} 2 "
 
     , testCase "ZSH: commits to pull and to push" $
         testMergeBranchCommitsToPushAndPull ZSH defaultConfig @?=
-        "\120366 4%{\x1b[1;32m%}\8644%{\x1b[0m%}4 "
+        "\120366 4%{\x1b[1;32m%}\8644%{\x1b[39m%}4 "
 
     , testCase "Other: commits to pull" $
         testMergeBranchCommitsToPull Other defaultConfig @?=
-        "\120366 \x1b[1;32m\8594\x1b[0m 2 "
+        "\120366 \x1b[1;32m\8594\x1b[39m 2 "
 
     , testCase "Other: commits to push" $
         testMergeBranchCommitsToPush Other defaultConfig @?=
-        "\120366 \x1b[1;32m\8592\x1b[0m 2 "
+        "\120366 \x1b[1;32m\8592\x1b[39m 2 "
 
     , testCase "Other: commits to pull and to push" $
         testMergeBranchCommitsToPushAndPull Other defaultConfig @?=
-        "\120366 4\x1b[1;32m\8644\x1b[0m4 "
+        "\120366 4\x1b[1;32m\8644\x1b[39m4 "
     ]
 
     , testGroup "Custom Config"
         [ testCase "ZSH: commits to pull" $
             testMergeBranchCommitsToPull ZSH customConfigMergeBranchCommits @?=
-            "foo %{\x1b[1;32m%}pull%{\x1b[0m%} 2 "
+            "foo %{\x1b[1;32m%}pull%{\x1b[39m%} 2 "
 
         , testCase "ZSH: commits to push" $
             testMergeBranchCommitsToPush ZSH customConfigMergeBranchCommits @?=
-            "foo %{\x1b[1;32m%}push%{\x1b[0m%} 2 "
+            "foo %{\x1b[1;32m%}push%{\x1b[39m%} 2 "
 
         , testCase "ZSH: commits to pull and to push" $
             testMergeBranchCommitsToPushAndPull ZSH customConfigMergeBranchCommits @?=
-            "foo 4%{\x1b[1;32m%}pull-push%{\x1b[0m%}4 "
+            "foo 4%{\x1b[1;32m%}pull-push%{\x1b[39m%}4 "
 
         , testCase "Other: commits to pull" $
             testMergeBranchCommitsToPull Other customConfigMergeBranchCommits @?=
-            "foo \x1b[1;32mpull\x1b[0m 2 "
+            "foo \x1b[1;32mpull\x1b[39m 2 "
 
         , testCase "Other: commits to push" $
             testMergeBranchCommitsToPush Other customConfigMergeBranchCommits @?=
-            "foo \x1b[1;32mpush\x1b[0m 2 "
+            "foo \x1b[1;32mpush\x1b[39m 2 "
 
         , testCase "Other: commits to pull and to push" $
             testMergeBranchCommitsToPushAndPull Other customConfigMergeBranchCommits @?=
-            "foo 4\x1b[1;32mpull-push\x1b[0m4 "
+            "foo 4\x1b[1;32mpull-push\x1b[39m4 "
         ]
   ]
 
@@ -202,50 +202,50 @@
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig)
             addLocalBranchName
-          @?= "[%{\x1b[0m%}foo%{\x1b[0m%}] "
+          @?= "[%{\x1b[39m%}foo%{\x1b[39m%}] "
 
         , testCase "Other: should display the name of the current branch if we are at the HEAD of any" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig)
             addLocalBranchName
-          @?= "[\x1b[0mfoo\x1b[0m] "
+          @?= "[\x1b[39mfoo\x1b[39m] "
 
         , testCase "ZSH: should display the current commit SHA if we are not on a branch's HEAD" $
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) defaultConfig)
             addLocalBranchName
-          @?= "[%{\x1b[1;33m%}detached@3d25ef%{\x1b[0m%}] "
+          @?= "[%{\x1b[1;33m%}detached@3d25ef%{\x1b[39m%}] "
 
         , testCase "Other: should display the current commit SHA if we are not on a branch's HEAD" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) defaultConfig)
             addLocalBranchName
-          @?= "[\x1b[1;33mdetached@3d25ef\x1b[0m] "
+          @?= "[\x1b[1;33mdetached@3d25ef\x1b[39m] "
     ]
     , testGroup "Custom Config"
     [   testCase "ZSH: should display the name of the current branch if we are at the HEAD of any" $
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitLocalBranch = "foo" }) customConfigLocalBranchName)
             addLocalBranchName
-          @?= "{%{\x1b[36m%}foo%{\x1b[0m%}} "
+          @?= "{%{\x1b[36m%}foo%{\x1b[39m%}} "
 
         , testCase "Other: should display the name of the current branch if we are at the HEAD of any" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitLocalBranch = "foo" }) customConfigLocalBranchName)
             addLocalBranchName
-          @?= "{\x1b[36mfoo\x1b[0m} "
+          @?= "{\x1b[36mfoo\x1b[39m} "
 
         , testCase "ZSH: should display the current commit SHA if we are not on a branch's HEAD" $
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) customConfigLocalBranchName)
             addLocalBranchName
-          @?= "{%{\x1b[35m%}det#!3d25ef%{\x1b[0m%}} "
+          @?= "{%{\x1b[35m%}det#!3d25ef%{\x1b[39m%}} "
 
         , testCase "Other: should display the current commit SHA if we are not on a branch's HEAD" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitCommitShortSHA = "3d25ef" }) customConfigLocalBranchName)
             addLocalBranchName
-          @?= "{\x1b[35mdet#!3d25ef\x1b[0m} "
+          @?= "{\x1b[35mdet#!3d25ef\x1b[39m} "
     ]
   ]
 
@@ -267,52 +267,52 @@
   [   testGroup "Default Config"
       [ testCase "ZSH: commits to pull" $
           testCommitsToPull ZSH defaultConfig @?=
-          "2%{\x1b[1;31m%}\8595%{\x1b[0m%} "
+          "2%{\x1b[1;31m%}\8595%{\x1b[39m%} "
 
       , testCase "ZSH: commits to push" $
           testCommitsToPush ZSH defaultConfig @?=
-          "2%{\x1b[1;32m%}\8593%{\x1b[0m%} "
+          "2%{\x1b[1;32m%}\8593%{\x1b[39m%} "
 
       , testCase "ZSH: commits to pull and to push" $
           testCommitsToPushAndPull ZSH defaultConfig @?=
-          "4%{\x1b[1;32m%}⥯%{\x1b[0m%}4 "
+          "4%{\x1b[1;32m%}⥯%{\x1b[39m%}4 "
 
       , testCase "Other: commits to pull" $
           testCommitsToPull Other defaultConfig @?=
-          "2\x1b[1;31m\8595\x1b[0m "
+          "2\x1b[1;31m\8595\x1b[39m "
 
       , testCase "Other: commits to push" $
           testCommitsToPush Other defaultConfig @?=
-          "2\x1b[1;32m\8593\x1b[0m "
+          "2\x1b[1;32m\8593\x1b[39m "
 
       , testCase "Other: commits to pull and to push" $
           testCommitsToPushAndPull Other defaultConfig @?=
-          "4\x1b[1;32m⥯\x1b[0m4 "
+          "4\x1b[1;32m⥯\x1b[39m4 "
       ]
     , testGroup "Custom Config"
       [ testCase "ZSH: commits to pull" $
           testCommitsToPull ZSH customConfigLocalCommits @?=
-          "2%{\x1b[35m%}pull%{\x1b[0m%} "
+          "2%{\x1b[35m%}pull%{\x1b[39m%} "
 
       , testCase "ZSH: commits to push" $
           testCommitsToPush ZSH customConfigLocalCommits @?=
-          "2%{\x1b[36m%}push%{\x1b[0m%} "
+          "2%{\x1b[36m%}push%{\x1b[39m%} "
 
       , testCase "ZSH: commits to pull and to push" $
           testCommitsToPushAndPull ZSH customConfigLocalCommits @?=
-          "4%{\x1b[37m%}push-pull%{\x1b[0m%}4 "
+          "4%{\x1b[37m%}push-pull%{\x1b[39m%}4 "
 
       , testCase "Other: commits to pull" $
           testCommitsToPull Other customConfigLocalCommits @?=
-          "2\x1b[35mpull\x1b[0m "
+          "2\x1b[35mpull\x1b[39m "
 
       , testCase "Other: commits to push" $
           testCommitsToPush Other customConfigLocalCommits @?=
-          "2\x1b[36mpush\x1b[0m "
+          "2\x1b[36mpush\x1b[39m "
 
       , testCase "Other: commits to pull and to push" $
           testCommitsToPushAndPull Other customConfigLocalCommits @?=
-          "4\x1b[37mpush-pull\x1b[0m4 "
+          "4\x1b[37mpush-pull\x1b[39m4 "
       ]
   ]
 
@@ -348,113 +348,113 @@
 testAddRepoState = testGroup "#addRepoState"
   [   testGroup "Default Config"
         [ testCase "ZSH: with Local Add Changes" $
-            testLocalAddChange ZSH defaultConfig @?= "2%{\x1b[1;37m%}A%{\x1b[0m%} "
+            testLocalAddChange ZSH defaultConfig @?= "2%{\x1b[1;37m%}A%{\x1b[39m%} "
 
           , testCase "ZSH: with Local Mod Changes" $
-            testLocalModChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}M%{\x1b[0m%} "
+            testLocalModChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}M%{\x1b[39m%} "
 
           , testCase "ZSH: with Local Del Changes" $
-            testLocalDelChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}D%{\x1b[0m%} "
+            testLocalDelChange ZSH defaultConfig @?= "2%{\x1b[1;31m%}D%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Add Changes" $
-            testIndexAddChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}A%{\x1b[0m%} "
+            testIndexAddChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}A%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Mod Changes" $
-            testIndexModChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}M%{\x1b[0m%} "
+            testIndexModChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}M%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Del Changes" $
-            testIndexDelChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}D%{\x1b[0m%} "
+            testIndexDelChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}D%{\x1b[39m%} "
 
           , testCase "ZSH: with Conflicted Changes" $
-            testConflictedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}C%{\x1b[0m%} "
+            testConflictedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}C%{\x1b[39m%} "
 
           , testCase "ZSH: with Renamed Changes" $
-            testRenamedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}R%{\x1b[0m%} "
+            testRenamedChange ZSH defaultConfig @?= "2%{\x1b[1;32m%}R%{\x1b[39m%} "
 
           , testCase "Other: with Local Add Changes" $
-            testLocalAddChange Other defaultConfig @?= "2\x1b[1;37mA\x1b[0m "
+            testLocalAddChange Other defaultConfig @?= "2\x1b[1;37mA\x1b[39m "
 
           , testCase "Other: with Local Mod Changes" $
-            testLocalModChange Other defaultConfig @?= "2\x1b[1;31mM\x1b[0m "
+            testLocalModChange Other defaultConfig @?= "2\x1b[1;31mM\x1b[39m "
 
           , testCase "Other: with Local Del Changes" $
-            testLocalDelChange Other defaultConfig @?= "2\x1b[1;31mD\x1b[0m "
+            testLocalDelChange Other defaultConfig @?= "2\x1b[1;31mD\x1b[39m "
 
           , testCase "Other: with Index Add Changes" $
-            testIndexAddChange Other defaultConfig @?= "2\x1b[1;32mA\x1b[0m "
+            testIndexAddChange Other defaultConfig @?= "2\x1b[1;32mA\x1b[39m "
 
           , testCase "Other: with Index Mod Changes" $
-            testIndexModChange Other defaultConfig @?= "2\x1b[1;32mM\x1b[0m "
+            testIndexModChange Other defaultConfig @?= "2\x1b[1;32mM\x1b[39m "
 
           , testCase "Other: with Index Del Changes" $
-            testIndexDelChange Other defaultConfig @?= "2\x1b[1;32mD\x1b[0m "
+            testIndexDelChange Other defaultConfig @?= "2\x1b[1;32mD\x1b[39m "
 
           , testCase "Other: with Conflicted Changes" $
-            testConflictedChange Other defaultConfig @?= "2\x1b[1;32mC\x1b[0m "
+            testConflictedChange Other defaultConfig @?= "2\x1b[1;32mC\x1b[39m "
 
           , testCase "Other: with Renamed Changes" $
-            testRenamedChange Other defaultConfig @?= "2\x1b[1;32mR\x1b[0m "
+            testRenamedChange Other defaultConfig @?= "2\x1b[1;32mR\x1b[39m "
 
           , testCase "ZSH: with every kind of Changes" $
-            testEveryRepoChange ZSH defaultConfig @?= "6%{\x1b[1;32m%}A%{\x1b[0m%}8%{\x1b[1;32m%}D%{\x1b[0m%}7%{\x1b[1;32m%}M%{\x1b[0m%}1%{\x1b[1;32m%}R%{\x1b[0m%} 5%{\x1b[1;31m%}D%{\x1b[0m%}4%{\x1b[1;31m%}M%{\x1b[0m%} 3%{\x1b[1;37m%}A%{\x1b[0m%} 2%{\x1b[1;32m%}C%{\x1b[0m%} "
+            testEveryRepoChange ZSH defaultConfig @?= "6%{\x1b[1;32m%}A%{\x1b[39m%}8%{\x1b[1;32m%}D%{\x1b[39m%}7%{\x1b[1;32m%}M%{\x1b[39m%}1%{\x1b[1;32m%}R%{\x1b[39m%} 5%{\x1b[1;31m%}D%{\x1b[39m%}4%{\x1b[1;31m%}M%{\x1b[39m%} 3%{\x1b[1;37m%}A%{\x1b[39m%} 2%{\x1b[1;32m%}C%{\x1b[39m%} "
 
           , testCase "Other: with every kind of Changes" $
-            testEveryRepoChange Other defaultConfig @?= "6\x1b[1;32mA\x1b[0m8\x1b[1;32mD\x1b[0m7\x1b[1;32mM\x1b[0m1\x1b[1;32mR\x1b[0m 5\x1b[1;31mD\x1b[0m4\x1b[1;31mM\x1b[0m 3\x1b[1;37mA\x1b[0m 2\x1b[1;32mC\x1b[0m "
+            testEveryRepoChange Other defaultConfig @?= "6\x1b[1;32mA\x1b[39m8\x1b[1;32mD\x1b[39m7\x1b[1;32mM\x1b[39m1\x1b[1;32mR\x1b[39m 5\x1b[1;31mD\x1b[39m4\x1b[1;31mM\x1b[39m 3\x1b[1;37mA\x1b[39m 2\x1b[1;32mC\x1b[39m "
         ]
     , testGroup "Custom Config"
         [ testCase "ZSH: with Local Add Changes" $
-            testLocalAddChange ZSH customChangeConfig @?= "2%{\x1b[35m%}B%{\x1b[0m%} "
+            testLocalAddChange ZSH customChangeConfig @?= "2%{\x1b[35m%}B%{\x1b[39m%} "
 
           , testCase "ZSH: with Local Mod Changes" $
-            testLocalModChange ZSH customChangeConfig @?= "2%{\x1b[34m%}N%{\x1b[0m%} "
+            testLocalModChange ZSH customChangeConfig @?= "2%{\x1b[34m%}N%{\x1b[39m%} "
 
           , testCase "ZSH: with Local Del Changes" $
-            testLocalDelChange ZSH customChangeConfig @?= "2%{\x1b[34m%}E%{\x1b[0m%} "
+            testLocalDelChange ZSH customChangeConfig @?= "2%{\x1b[34m%}E%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Add Changes" $
-            testIndexAddChange ZSH customChangeConfig @?= "2%{\x1b[36m%}B%{\x1b[0m%} "
+            testIndexAddChange ZSH customChangeConfig @?= "2%{\x1b[36m%}B%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Mod Changes" $
-            testIndexModChange ZSH customChangeConfig @?= "2%{\x1b[36m%}N%{\x1b[0m%} "
+            testIndexModChange ZSH customChangeConfig @?= "2%{\x1b[36m%}N%{\x1b[39m%} "
 
           , testCase "ZSH: with Index Del Changes" $
-            testIndexDelChange ZSH customChangeConfig @?= "2%{\x1b[36m%}E%{\x1b[0m%} "
+            testIndexDelChange ZSH customChangeConfig @?= "2%{\x1b[36m%}E%{\x1b[39m%} "
 
           , testCase "ZSH: with Conflicted Changes" $
-            testConflictedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}D%{\x1b[0m%} "
+            testConflictedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}D%{\x1b[39m%} "
 
           , testCase "ZSH: with Renamed Changes" $
-            testRenamedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}S%{\x1b[0m%} "
+            testRenamedChange ZSH customChangeConfig @?= "2%{\x1b[36m%}S%{\x1b[39m%} "
 
           , testCase "Other: with Local Add Changes" $
-            testLocalAddChange Other customChangeConfig @?= "2\x1b[35mB\x1b[0m "
+            testLocalAddChange Other customChangeConfig @?= "2\x1b[35mB\x1b[39m "
 
           , testCase "Other: with Local Mod Changes" $
-            testLocalModChange Other customChangeConfig @?= "2\x1b[34mN\x1b[0m "
+            testLocalModChange Other customChangeConfig @?= "2\x1b[34mN\x1b[39m "
 
           , testCase "Other: with Local Del Changes" $
-            testLocalDelChange Other customChangeConfig @?= "2\x1b[34mE\x1b[0m "
+            testLocalDelChange Other customChangeConfig @?= "2\x1b[34mE\x1b[39m "
 
           , testCase "Other: with Index Add Changes" $
-            testIndexAddChange Other customChangeConfig @?= "2\x1b[36mB\x1b[0m "
+            testIndexAddChange Other customChangeConfig @?= "2\x1b[36mB\x1b[39m "
 
           , testCase "Other: with Index Mod Changes" $
-            testIndexModChange Other customChangeConfig @?= "2\x1b[36mN\x1b[0m "
+            testIndexModChange Other customChangeConfig @?= "2\x1b[36mN\x1b[39m "
 
           , testCase "Other: with Index Del Changes" $
-            testIndexDelChange Other customChangeConfig @?= "2\x1b[36mE\x1b[0m "
+            testIndexDelChange Other customChangeConfig @?= "2\x1b[36mE\x1b[39m "
 
           , testCase "Other: with Conflicted Changes" $
-            testConflictedChange Other customChangeConfig @?= "2\x1b[36mD\x1b[0m "
+            testConflictedChange Other customChangeConfig @?= "2\x1b[36mD\x1b[39m "
 
           , testCase "Other: with Renamed Changes" $
-            testRenamedChange Other customChangeConfig @?= "2\x1b[36mS\x1b[0m "
+            testRenamedChange Other customChangeConfig @?= "2\x1b[36mS\x1b[39m "
 
           , testCase "ZSH: with every kind of Changes" $
-            testEveryRepoChange ZSH customChangeConfig @?= "6%{\x1b[36m%}B%{\x1b[0m%}8%{\x1b[36m%}E%{\x1b[0m%}7%{\x1b[36m%}N%{\x1b[0m%}1%{\x1b[36m%}S%{\x1b[0m%} 5%{\x1b[34m%}E%{\x1b[0m%}4%{\x1b[34m%}N%{\x1b[0m%} 3%{\x1b[35m%}B%{\x1b[0m%} 2%{\x1b[36m%}D%{\x1b[0m%} "
+            testEveryRepoChange ZSH customChangeConfig @?= "6%{\x1b[36m%}B%{\x1b[39m%}8%{\x1b[36m%}E%{\x1b[39m%}7%{\x1b[36m%}N%{\x1b[39m%}1%{\x1b[36m%}S%{\x1b[39m%} 5%{\x1b[34m%}E%{\x1b[39m%}4%{\x1b[34m%}N%{\x1b[39m%} 3%{\x1b[35m%}B%{\x1b[39m%} 2%{\x1b[36m%}D%{\x1b[39m%} "
 
           , testCase "Other: with every kind of Changes" $
-            testEveryRepoChange Other customChangeConfig @?= "6\x1b[36mB\x1b[0m8\x1b[36mE\x1b[0m7\x1b[36mN\x1b[0m1\x1b[36mS\x1b[0m 5\x1b[34mE\x1b[0m4\x1b[34mN\x1b[0m 3\x1b[35mB\x1b[0m 2\x1b[36mD\x1b[0m "
+            testEveryRepoChange Other customChangeConfig @?= "6\x1b[36mB\x1b[39m8\x1b[36mE\x1b[39m7\x1b[36mN\x1b[39m1\x1b[36mS\x1b[39m 5\x1b[34mE\x1b[39m4\x1b[34mN\x1b[39m 3\x1b[35mB\x1b[39m 2\x1b[36mD\x1b[39m "
         ]
   ]
 
@@ -471,23 +471,23 @@
       [ testCase "ZSH: hardcoded character" $
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitStashCount = 2 }) defaultConfig) addStashes
-          @?= "2%{\x1b[1;32m%}\8801%{\x1b[0m%} "
+          @?= "2%{\x1b[1;32m%}\8801%{\x1b[39m%} "
 
         , testCase "Other: hardcoded character" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitStashCount = 2 }) defaultConfig) addStashes
-          @?= "2\x1b[1;32m\8801\x1b[0m "
+          @?= "2\x1b[1;32m\8801\x1b[39m "
       ]
   , testGroup "Custom Config"
       [ testCase "ZSH: hardcoded character" $
           testWriterWithConfig
             (buildOutputConfig ZSH (zeroGitRepoState { gitStashCount = 2 }) customStashConfig) addStashes
-          @?= "2%{\x1b[36m%}stash%{\x1b[0m%} "
+          @?= "2%{\x1b[36m%}stash%{\x1b[39m%} "
 
         , testCase "Other: hardcoded character" $
           testWriterWithConfig
             (buildOutputConfig Other (zeroGitRepoState { gitStashCount = 2 }) customStashConfig) addStashes
-          @?= "2\x1b[36mstash\x1b[0m "
+          @?= "2\x1b[36mstash\x1b[39m "
       ]
   ]
 
@@ -519,7 +519,7 @@
 
 {- For reference here, the full prompt would be
 
- "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+ "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
 -}
 testPartialPrompt :: TestTree
@@ -528,43 +528,43 @@
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartRepoIndicator = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "w/out merge branch commits info" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartMergeBranchCommitsDiff = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "w/out local branch info" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalBranch = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "with a branch set to ignore its merge branch" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confMergeBranchIgnoreBranches = ["branch"] })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "w/out commits push/pull info" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartCommitsToOrigin = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "w/out local repo changes" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalChangesState = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 3%{\ESC[1;32m%}\8801%{\ESC[39m%} "
 
     , testCase "w/out stashes" $
         testWriterWithConfig
           (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartStashes = False })
           buildPrompt
-        @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} "
+        @?= "%{\ESC[39m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[39m%}1 [%{\ESC[39m%}branch%{\ESC[39m%}] 5%{\ESC[1;32m%}⥯%{\ESC[39m%}6 5%{\ESC[1;32m%}A%{\ESC[39m%}6%{\ESC[1;32m%}D%{\ESC[39m%}4%{\ESC[1;32m%}M%{\ESC[39m%}7%{\ESC[1;32m%}R%{\ESC[39m%} 3%{\ESC[1;31m%}D%{\ESC[39m%}1%{\ESC[1;31m%}M%{\ESC[39m%} 2%{\ESC[1;37m%}A%{\ESC[39m%} 8%{\ESC[1;32m%}C%{\ESC[39m%} "
   ]
 
 -- | Utility function to test a ShellOutput function and gets the prompt built
