diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 ## MASTER
 
+## Dotenv 0.4.0.0
+
+* Use Megaparsec 6.0
+* Dropped support for GHC 7.6
+
 ## Dotenv 0.3.4.0
 
 * Allow optparse-applicative 0.14
diff --git a/dotenv.cabal b/dotenv.cabal
--- a/dotenv.cabal
+++ b/dotenv.cabal
@@ -1,5 +1,5 @@
 name:                dotenv
-version:             0.3.4.0
+version:             0.4.0.0
 synopsis:            Loads environment variables from dotenv files
 homepage:            https://github.com/stackbuilders/dotenv-hs
 description:
@@ -51,11 +51,11 @@
 
 executable dotenv
   main-is:             Main.hs
-  build-depends:         base >=4.6 && <5.0
+  build-depends:         base >=4.7 && <5.0
                        , base-compat >= 0.4
-                       , dotenv >= 0.3.1.0
+                       , dotenv
                        , optparse-applicative >=0.11 && < 0.15
-                       , megaparsec >= 5.0 && < 6.0
+                       , megaparsec >= 6.0 && < 7.0
                        , process
                        , text
                        , transformers >=0.4 && < 0.6
@@ -73,13 +73,16 @@
                       , Configuration.Dotenv.ParsedVariable
                       , Configuration.Dotenv.Text
 
-  build-depends:         base >=4.6 && <5.0
+  build-depends:         base >=4.7 && <5.0
                        , base-compat >= 0.4
-                       , megaparsec >= 5.0 && < 6.0
+                       , megaparsec >= 6.0 && < 7.0
                        , text
                        , transformers >=0.4 && < 0.6
                        , exceptions >= 0.8 && < 0.9
 
+  if !impl(ghc >= 7.10)
+    build-depends:      void         == 0.7.*
+
   hs-source-dirs:      src
   ghc-options:         -Wall
   if flag(dev)
@@ -100,15 +103,18 @@
                        , Configuration.Dotenv.Parse
                        , Configuration.Dotenv.ParsedVariable
 
-  build-depends:       base >=4.6 && <5.0
+  build-depends:       base >=4.7 && <5.0
                      , base-compat >= 0.4
-                     , dotenv >= 0.3.1.0
-                     , megaparsec >= 5.0 && < 6.0
+                     , dotenv
+                     , megaparsec >= 6.0 && < 7.0
                      , hspec
                      , text
                      , transformers >=0.4 && < 0.6
                      , exceptions >= 0.8 && < 0.9
-                     , hspec-megaparsec >= 0.2 && < 0.4
+                     , hspec-megaparsec >= 1.0 && < 2.0
+
+  if !impl(ghc >= 7.10)
+    build-depends:      void         == 0.7.*
 
   if flag(dev)
     ghc-options:      -Wall -Werror
diff --git a/spec/Configuration/Dotenv/ParseSpec.hs b/spec/Configuration/Dotenv/ParseSpec.hs
--- a/spec/Configuration/Dotenv/ParseSpec.hs
+++ b/spec/Configuration/Dotenv/ParseSpec.hs
@@ -6,9 +6,10 @@
 import Configuration.Dotenv.ParsedVariable (ParsedVariable(..),
                                             VarValue(..),
                                             VarFragment(..))
+import Data.Void (Void)                                            
 import Test.Hspec (it, describe, Spec, hspec)
 import Test.Hspec.Megaparsec (shouldParse, shouldFailOn)
-import Text.Megaparsec (ParseError, Dec, parse)
+import Text.Megaparsec (ParseError, parse)
 
 main :: IO ()
 main = hspec spec
@@ -141,5 +142,5 @@
   it "doesn't allow more configuration options after a quoted value" $
     parseConfig `shouldFailOn` "foo='bar'baz='buz'"
 
-parseConfig :: String -> Either (ParseError Char Dec) [ParsedVariable]
+parseConfig :: String -> Either (ParseError Char Void) [ParsedVariable]
 parseConfig = parse configParser ""
diff --git a/src/Configuration/Dotenv/Parse.hs b/src/Configuration/Dotenv/Parse.hs
--- a/src/Configuration/Dotenv/Parse.hs
+++ b/src/Configuration/Dotenv/Parse.hs
@@ -12,17 +12,21 @@
 -- information on the dotenv format can be found in the project README and the
 -- test suite.
 
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP               #-}
+{-# LANGUAGE OverloadedStrings #-}
 
 module Configuration.Dotenv.Parse (configParser) where
 
-import Configuration.Dotenv.ParsedVariable
-import Control.Applicative
-import Control.Monad
-import Text.Megaparsec
-import Text.Megaparsec.String (Parser)
-import qualified Text.Megaparsec.Lexer as L
+import           Configuration.Dotenv.ParsedVariable
+import           Control.Applicative
+import           Control.Monad
+import           Data.Void                           (Void)
+import           Text.Megaparsec
+import           Text.Megaparsec.Char
+import qualified Text.Megaparsec.Char.Lexer          as L
 
+type Parser = Parsec Void String
+
 data QuoteType = SingleQuote | DoubleQuote
 
 -- | Returns a parser for a Dotenv configuration file. Accepts key and value
@@ -92,7 +96,7 @@
 
 -- | Just like 'spaceChar', but does not consume newlines.
 spaceChar' :: Parser Char
-spaceChar' = oneOf " \t"
+spaceChar' = oneOf (" \t" :: String)
 {-# INLINE spaceChar' #-}
 
 -- | Skip line comment and stop before newline character without consuming
