diff --git a/Text/Trifecta/CharSet.hs b/Text/Trifecta/CharSet.hs
--- a/Text/Trifecta/CharSet.hs
+++ b/Text/Trifecta/CharSet.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fspec-constr #-}
 -----------------------------------------------------------------------------
 -- |
@@ -277,7 +278,11 @@
   typeOf _ = mkTyConApp charSetTyCon []
 
 charSetTyCon :: TyCon
+#if __GLASGOW_HASKELL__ < 704
 charSetTyCon = mkTyCon "Text.Trifecta.CharSet.CharSet"
+#else
+charSetTyCon = mkTyCon3 "trifecta" "Text.Trifecta.CharSet" "CharSet"
+#endif
 {-# NOINLINE charSetTyCon #-}
 
 instance Data CharSet where
diff --git a/Text/Trifecta/Diagnostic/Err.hs b/Text/Trifecta/Diagnostic/Err.hs
--- a/Text/Trifecta/Diagnostic/Err.hs
+++ b/Text/Trifecta/Diagnostic/Err.hs
@@ -24,7 +24,6 @@
 import Text.Trifecta.Diagnostic.Prim
 import Text.Trifecta.Diagnostic.Level
 import Text.Trifecta.Diagnostic.Rendering.Prim
-import Text.PrettyPrint.Free
 
 data Err e
   = EmptyErr                  -- no error specified, unlocated
diff --git a/Text/Trifecta/Diagnostic/Err/Log.hs b/Text/Trifecta/Diagnostic/Err/Log.hs
--- a/Text/Trifecta/Diagnostic/Err/Log.hs
+++ b/Text/Trifecta/Diagnostic/Err/Log.hs
@@ -15,7 +15,6 @@
 
 import Data.Functor.Plus
 import Data.Semigroup
-import Text.PrettyPrint.Free hiding (empty)
 import Text.Trifecta.Diagnostic.Prim
 import Text.Trifecta.Highlight.Prim
 import Data.Semigroup.Union (union, empty)
diff --git a/Text/Trifecta/Diagnostic/Err/State.hs b/Text/Trifecta/Diagnostic/Err/State.hs
--- a/Text/Trifecta/Diagnostic/Err/State.hs
+++ b/Text/Trifecta/Diagnostic/Err/State.hs
@@ -9,14 +9,13 @@
 -- Portability :  non-portable
 --
 ----------------------------------------------------------------------------
-module Text.Trifecta.Diagnostic.Err.State 
+module Text.Trifecta.Diagnostic.Err.State
   ( ErrState(..)
   ) where
 
 import Data.Functor.Plus
 import Data.Set as Set
 import Data.Semigroup
-import Text.PrettyPrint.Free
 import Text.Trifecta.Diagnostic.Err
 import Text.Trifecta.Diagnostic.Rendering.Caret
 
@@ -34,9 +33,9 @@
 
 instance Plus ErrState where
   zero = ErrState mempty mempty
- 
+
 instance Semigroup (ErrState e) where
-  (<>) = (<!>) 
+  (<>) = (<!>)
 
 instance Monoid (ErrState e) where
   mempty = zero
diff --git a/Text/Trifecta/IntervalMap.hs b/Text/Trifecta/IntervalMap.hs
--- a/Text/Trifecta/IntervalMap.hs
+++ b/Text/Trifecta/IntervalMap.hs
@@ -59,7 +59,6 @@
 import Data.Semigroup.Union
 import Data.Semigroup.Foldable
 import Data.Semigroup.Traversable
-import Data.Functor.Apply
 import Data.Key
 import Data.Pointed
 
diff --git a/Text/Trifecta/Parser/Class.hs b/Text/Trifecta/Parser/Class.hs
--- a/Text/Trifecta/Parser/Class.hs
+++ b/Text/Trifecta/Parser/Class.hs
@@ -76,7 +76,7 @@
   -- | Lexeme parser |semi| parses the character \';\' and skips any
   -- trailing white space. Returns the character \';\'.
   semi :: m Char
-  semi = satisfyAscii (';'==) <?> ";"
+  semi = (satisfyAscii (';'==) <?> ";") <* (someSpace <|> pure ())
 
   -- | Used to emit an error on an unexpected token
   unexpected :: String -> m a
diff --git a/Text/Trifecta/Parser/It.hs b/Text/Trifecta/Parser/It.hs
--- a/Text/Trifecta/Parser/It.hs
+++ b/Text/Trifecta/Parser/It.hs
@@ -30,7 +30,6 @@
 import Data.ByteString as Strict
 import Data.ByteString.Lazy as Lazy
 import Data.Functor.Bind
-import Data.Functor.Plus
 import Data.Profunctor
 import Data.Key as Key
 import Text.Trifecta.Rope.Prim as Rope
diff --git a/Text/Trifecta/Parser/Prim.hs b/Text/Trifecta/Parser/Prim.hs
--- a/Text/Trifecta/Parser/Prim.hs
+++ b/Text/Trifecta/Parser/Prim.hs
@@ -31,7 +31,7 @@
 import Data.Semigroup
 import Data.Foldable
 import qualified Data.List as List
-import Data.Functor.Bind (Apply(..), Bind((>>-)))
+import Data.Functor.Bind (Bind((>>-)))
 import qualified Text.Trifecta.IntervalMap as IntervalMap
 import Data.Set as Set hiding (empty, toList)
 import Data.ByteString as Strict hiding (empty)
diff --git a/trifecta.cabal b/trifecta.cabal
--- a/trifecta.cabal
+++ b/trifecta.cabal
@@ -1,6 +1,6 @@
 name:          trifecta
 category:      Text, Parsing, Diagnostics, Pretty Printer, Logging
-version:       0.49.1
+version:       0.50
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -102,30 +102,30 @@
 
   build-depends:
     base                 >= 4       && < 5,
-    array                >= 0.3.0.2 && < 0.4,
+    array                >= 0.3.0.2 && < 0.5,
     containers           >= 0.3     && < 0.5,
-    unordered-containers >= 0.1.4   && < 0.2,
+    unordered-containers >= 0.2.1   && < 0.3,
     blaze-builder        >= 0.3.0.1 && < 0.4,
     blaze-html           >= 0.4.1.6 && < 0.5,
-    bifunctors           >= 0.1.2   && < 0.2,
-    data-lens            >= 2.0.1   && < 2.1,
-    data-lens-fd         >= 2.0     && < 2.1,
-    deepseq              >= 1.2.0.1 && < 1.3,
+    bifunctors           >= 0.1.3   && < 0.2,
+    data-lens            >= 2.0.3   && < 2.1,
+    data-lens-fd         >= 2.0.1   && < 2.1,
+    deepseq              >= 1.2.0.1 && < 1.4,
     hashable             >= 1.1.2.1 && < 1.2,
     bytestring           >= 0.9.1   && < 0.10,
-    mtl                  >= 2.0.1   && < 2.1,
-    semigroups           >= 0.8     && < 0.9,
+    mtl                  >= 2.1     && < 2.2,
+    semigroups           >= 0.8.2   && < 0.9,
     fingertree           >= 0.0.1   && < 0.1,
-    reducers             >= 0.1.7   && < 0.2,
-    profunctors          >= 0.1.1   && < 0.2,
+    reducers             >= 0.2     && < 0.3,
+    profunctors          >= 0.1.2   && < 0.2,
     utf8-string          >= 0.3.6   && < 0.4,
-    semigroupoids        >= 1.2.4   && < 1.3,
+    semigroupoids        >= 1.3     && < 1.4,
     parallel             >= 3.2     && < 3.3,
-    pointed              >= 2.0.2   && < 2.1,
-    transformers         >= 0.2.2   && < 0.3,
-    kan-extensions       >= 2.1     && < 2.2,
-    comonad              >= 1.1.1.1 && < 1.2,
+    pointed              >= 2.1     && < 2.2,
+    transformers         >= 0.3     && < 0.4,
+    kan-extensions       >= 2.2     && < 2.3,
+    comonad              >= 1.1.1.3 && < 1.2,
     terminfo             >= 0.3.2   && < 0.4,
-    keys                 >= 2.1.1.1 && < 2.2,
-    wl-pprint-extras     >= 1.6     && < 1.7,
-    wl-pprint-terminfo   >= 0.8.1   && < 0.9
+    keys                 >= 2.1.3   && < 2.2,
+    wl-pprint-extras     >= 1.6.3   && < 1.7,
+    wl-pprint-terminfo   >= 0.8.3   && < 0.9
