diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,7 @@
+0.3.5.3 [2019.08.30]
+-------------------
+* Support GHC 8.8
+
+0.3.5 [2019.08.21]
+-------------------
+* Stable version
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,14 +4,16 @@
 [![Build](https://img.shields.io/travis/leptonyu/salak.svg?logo=travis)](https://travis-ci.org/leptonyu/salak)
 [![stackage LTS package](http://stackage.org/package/salak/badge/lts)](http://stackage.org/lts/package/salak)
 [![stackage Nightly package](http://stackage.org/package/salak/badge/nightly)](http://stackage.org/nightly/package/salak)
-[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/leptonyu/salak/blob/master/LICENSE)
+[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/leptonyu/salak/blob/master/salak/LICENSE)
+![Hackage-Deps](https://img.shields.io/hackage-deps/v/salak)
 
+
 Configuration (re)loader in Haskell.
 
-## salak-yaml
-[![salak-yaml](https://img.shields.io/hackage/v/salak-yaml.svg?logo=haskell)](https://hackage.haskell.org/package/salak-yaml)
-## salak-toml
-[![salak-toml](https://img.shields.io/hackage/v/salak-toml.svg?logo=haskell)](https://hackage.haskell.org/package/salak-toml)
+### Packages
+
+- [![Hackage](https://img.shields.io/badge/salak-yaml-orange)](https://hackage.haskell.org/package/salak-yaml) Yaml support for salak.
+- [![Hackage](https://img.shields.io/badge/salak-toml-orange)](https://hackage.haskell.org/package/salak-toml) Toml support for salak.
 
 ## Introduction
 This library defines a universal procedure to load configurations and parse properties, also supports reload configuration files.
diff --git a/salak.cabal b/salak.cabal
--- a/salak.cabal
+++ b/salak.cabal
@@ -4,11 +4,12 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 3b11a5cf0761804166bde937f74cb9280c69f018e509879be1b8711d49ac58c0
+-- hash: a30d96cdc96bcc24bbb445150b6b13acead0ad726df1fab2d6ffa6f6f065f826
 
 name:           salak
-version:        0.3.5.2
+version:        0.3.5.3
 synopsis:       Configuration (re)Loader and Parser.
+description:    This library defines a universal procedure to load configurations and parse properties, also supports reload configuration files.
 category:       Library, Configuration
 homepage:       https://github.com/leptonyu/salak#readme
 author:         Daniel YU
@@ -19,6 +20,7 @@
 build-type:     Simple
 extra-source-files:
     README.md
+    CHANGELOG.md
 
 library
   exposed-modules:
@@ -36,7 +38,7 @@
   default-extensions: BangPatterns CPP DefaultSignatures DeriveFunctor DeriveGeneric FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses NoOverloadedLists OverloadedStrings RankNTypes RecordWildCards ScopedTypeVariables TupleSections TypeOperators
   ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures
   build-depends:
-      base >=4.10 && <5
+      base >=4.9 && <5
     , bytestring >=0.10.8 && <0.11
     , containers >=0.6.0 && <0.7
     , data-default >=0.7.1 && <0.8
@@ -47,7 +49,6 @@
     , hashable >=1.2.7.0 && <1.4
     , heaps >=0.3.6 && <0.4
     , megaparsec >=7.0.5 && <7.1
-    , menshen >=0.0.3 && <0.1
     , mtl >=2.2.2 && <2.3
     , scientific >=0.3.6 && <0.4
     , text >=1.2.3 && <1.3
@@ -71,7 +72,7 @@
   ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -rtsopts -threaded -with-rtsopts=-K1K
   build-depends:
       QuickCheck <2.14
-    , base >=4.10 && <5
+    , base >=4.9 && <5
     , hspec ==2.*
     , mtl >=2.2.2 && <2.3
     , random
@@ -92,7 +93,7 @@
   default-extensions: BangPatterns CPP DefaultSignatures DeriveFunctor DeriveGeneric FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses NoOverloadedLists OverloadedStrings RankNTypes RecordWildCards ScopedTypeVariables TupleSections TypeOperators
   ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -rtsopts -threaded -with-rtsopts=-K1K
   build-depends:
-      base >=4.10 && <5
+      base >=4.9 && <5
     , criterion
     , data-default
     , mtl >=2.2.2 && <2.3
diff --git a/src/Salak.hs b/src/Salak.hs
--- a/src/Salak.hs
+++ b/src/Salak.hs
@@ -54,12 +54,9 @@
   -- * Reexport
   , MonadCatch
   , MonadThrow
-  , MonadIO
   ) where
 
 import           Control.Monad.Catch
-import           Control.Monad.IO.Class  (MonadIO)
-import           Control.Monad.IO.Unlift
 import           Control.Monad.Reader
 import           Data.Default
 import           Data.Maybe
@@ -70,6 +67,9 @@
 import           Salak.Internal.Writable
 import           System.Directory
 import           System.FilePath         ((</>))
+#if __GLASGOW_HASKELL__ < 808
+import           Control.Monad.IO.Class  (MonadIO (..))
+#endif
 
 -- | Type synonyms of 'SourcePack'
 type Salak = SourcePack
diff --git a/src/Salak/Internal.hs b/src/Salak/Internal.hs
--- a/src/Salak/Internal.hs
+++ b/src/Salak/Internal.hs
@@ -40,7 +40,6 @@
   , ToValue(..)
   , liftNT
   , SourcePack(..)
-  , MonadIO
   , runProp
   , withKeys
   , extract
@@ -53,7 +52,6 @@
 import           Control.Monad
 import           Control.Monad.Catch
 import           Control.Monad.Except
-import           Control.Monad.IO.Class  (MonadIO, liftIO)
 import qualified Control.Monad.IO.Unlift as IU
 import           Control.Monad.Reader
 import qualified Control.Monad.State     as MS
@@ -74,6 +72,9 @@
 import qualified Salak.Trie              as T
 import           System.Directory
 import           System.Environment
+#if __GLASGOW_HASKELL__ < 808
+import           Control.Monad.IO.Class  (MonadIO (..))
+#endif
 
 data UpdateSource = UpdateSource
   {  ref    :: !(MVar Source)
diff --git a/src/Salak/Internal/Prop.hs b/src/Salak/Internal/Prop.hs
--- a/src/Salak/Internal/Prop.hs
+++ b/src/Salak/Internal/Prop.hs
@@ -20,7 +20,7 @@
 import           Data.List               (sort)
 import qualified Data.Map.Strict         as M
 import           Data.Maybe
-import           Data.Menshen
+-- import           Data.Menshen
 import           Data.Scientific
 import           Data.Semigroup
 import qualified Data.Set                as S
@@ -289,9 +289,9 @@
       Left  (_ :: SomeException) -> liftIO a >>= buildIO sp
       Right o                    -> return o
 
-instance Monad m => HasValid (Prop m) where
-  {-# INLINE invalid #-}
-  invalid = Control.Monad.Fail.fail . toI18n
+-- instance Monad m => HasValid (Prop m) where
+--   {-# INLINE invalid #-}
+--   invalid = Control.Monad.Fail.fail . toI18n
 
 {-# INLINE readPrimitive' #-}
 readPrimitive' :: (HasCallStack, MonadIO m) => (Value -> Either String a) -> Prop m (Maybe a)
@@ -568,11 +568,13 @@
   Just v -> return v
   _      -> Control.Monad.Fail.fail "scientific number doesn't fit in the target representation"
 
+#if __GLASGOW_HASKELL__ >= 802
 instance FromProp m CBool where
   {-# INLINE fromProp #-}
   fromProp = do
     b <- fromProp
     return $ if b then 1 else 0
+#endif
 
 instance FromProp m CShort where
   {-# INLINE fromProp #-}
diff --git a/src/Salak/Internal/Val.hs b/src/Salak/Internal/Val.hs
--- a/src/Salak/Internal/Val.hs
+++ b/src/Salak/Internal/Val.hs
@@ -1,6 +1,5 @@
 module Salak.Internal.Val where
 
-import           Control.Applicative  ((<|>))
 import           Data.ByteString      (ByteString)
 import           Data.Heap            (Heap)
 import qualified Data.Heap            as H
@@ -14,6 +13,9 @@
 import           Salak.Internal.Key
 import           Text.Megaparsec
 import           Text.Megaparsec.Char
+#if __GLASGOW_HASKELL__ < 808
+import           Control.Applicative  ((<|>))
+#endif
 #if __GLASGOW_HASKELL__ < 804
 import           Data.Semigroup       ((<>))
 #endif
