diff --git a/bookhound.cabal b/bookhound.cabal
--- a/bookhound.cabal
+++ b/bookhound.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           bookhound
-version:        0.1.26.0
+version:        0.2.0
 synopsis:       Simple Parser Combinators
 description:    Please see the README on GitHub at <https://github.com/albertprz/bookhound#readme>
 category:       Parser Combinators
diff --git a/src/Bookhound/Parser.hs b/src/Bookhound/Parser.hs
--- a/src/Bookhound/Parser.hs
+++ b/src/Bookhound/Parser.hs
@@ -5,6 +5,7 @@
 import           Control.Monad             (MonadPlus)
 import           Control.Monad.Error.Class (MonadError (..))
 import           Data.Either               (fromRight)
+import           Data.Foldable             (foldl')
 import           Data.Set                  (Set)
 import qualified Data.Set                  as Set
 import           Data.Text                 (Text, unpack)
@@ -111,10 +112,10 @@
 choice = anyOf
 
 anyOf :: Foldable f => f (Parser a) -> Parser a
-anyOf = foldl (<|>) empty
+anyOf = foldl' (<|>) empty
 
 allOf :: Foldable f => f (Parser a) -> Parser a
-allOf = foldl both (pure undefined)
+allOf = foldl' both (pure undefined)
 
 both :: Parser a -> Parser a -> Parser a
 both (P p t e) (P p' t' e') =
diff --git a/src/Bookhound/ParserCombinators.hs b/src/Bookhound/ParserCombinators.hs
--- a/src/Bookhound/ParserCombinators.hs
+++ b/src/Bookhound/ParserCombinators.hs
@@ -29,14 +29,9 @@
   isNot   = isMatch (/=) anyChar
   inverse = except anyChar
 
-instance   IsMatch String where
-  is      = traverse is
-  isNot   = traverse is
-  inverse = except (anyChar |*)
-
 instance   IsMatch Text where
-  is      = fmap pack . is . unpack
-  isNot   = fmap pack . is . unpack
+  is      = fmap pack . traverse is . unpack
+  isNot   = fmap pack . traverse is . unpack
   inverse = except (anyChar ||*)
 
 
diff --git a/src/Bookhound/Parsers/Text.hs b/src/Bookhound/Parsers/Text.hs
--- a/src/Bookhound/Parsers/Text.hs
+++ b/src/Bookhound/Parsers/Text.hs
@@ -16,8 +16,8 @@
 import qualified Data.Text                   as Text
 
 
-string :: Parser Text
-string = (anyChar ||*)
+anyString :: Parser Text
+anyString = (anyChar ||*)
 
 word :: Parser Text
 word = (inverse whiteSpace ||+)
diff --git a/src/Bookhound/Utils/Text.hs b/src/Bookhound/Utils/Text.hs
--- a/src/Bookhound/Utils/Text.hs
+++ b/src/Bookhound/Utils/Text.hs
@@ -27,7 +27,7 @@
 instance ToText Double where
   toText = pack . show
 
-instance ToText a => ToText [a] where
+instance {-# OVERLAPPING #-} ToText a => ToText [a] where
   toText = Text.concat . fmap toText
 
 instance (ToText a, Foldable f, Functor f) => ToText (f a) where
diff --git a/test/Bookhound/Parsers/CollectionsSpec.hs b/test/Bookhound/Parsers/CollectionsSpec.hs
--- a/test/Bookhound/Parsers/CollectionsSpec.hs
+++ b/test/Bookhound/Parsers/CollectionsSpec.hs
@@ -11,7 +11,7 @@
 import           Data.Char                     (isAlpha, isAscii)
 import           Data.List                     (intercalate)
 import qualified Data.Map                      as Map
-import           Data.Text                     ( pack)
+import           Data.Text                     (pack, unpack)
 import           Test.QuickCheck               ((==>))
 import           Test.QuickCheck.Property      ((===))
 
@@ -46,7 +46,7 @@
 
     prop "parses a map provided the key and value parsers" $
       \(x :: [(Char, Char)]) ->
-        runParser (mapOf (is (":" :: String)) alpha alpha)
+        runParser (mapOf (unpack <$> (is ":")) alpha alpha)
         (pack ("{" <>
                intercalate ", " (showMapEntry <$> filter areAlpha' x)
                <> "}"))
