diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for haskell-src-exts-simple
 
+## 1.21.0.0    -- 2019-04-27
+
+* support haskell-src-exts 1.21.0
+
 ## 1.20.0.0    -- 2017-12-??
 
 * support haskell-src-exts 1.20.0
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -20,6 +20,9 @@
 
 ## Compatibility
 
+Since version 1.18, haskell-src-exts-simple has followed the changes in
+haskell-src-exts, without any attempt to keep backward compatibility.
+
 ### Comparison to haskell-src-exts 1.17 (as of version 1.18):
 
 haskell-src-exts-simple provides a simplified view of the annotated
diff --git a/haskell-src-exts-simple.cabal b/haskell-src-exts-simple.cabal
--- a/haskell-src-exts-simple.cabal
+++ b/haskell-src-exts-simple.cabal
@@ -1,5 +1,5 @@
 name:                haskell-src-exts-simple
-version:             1.20.0.0
+version:             1.21.0.0
 synopsis:            A simplified view on the haskell-src-exts AST
 description:
     This package provides a shim for haskell-src-exts (HSE), exposing the
@@ -39,6 +39,6 @@
         ScopedTypeVariables
     build-depends:
         base >= 4.7 && < 5,
-        haskell-src-exts >= 1.20 && < 1.21
+        haskell-src-exts >= 1.21 && < 1.22
     hs-source-dirs:      src
     default-language:    Haskell2010
diff --git a/src/Language/Haskell/Exts/Simple/Fixity.hs b/src/Language/Haskell/Exts/Simple/Fixity.hs
--- a/src/Language/Haskell/Exts/Simple/Fixity.hs
+++ b/src/Language/Haskell/Exts/Simple/Fixity.hs
@@ -21,34 +21,3 @@
 
 applyFixities :: (AppFixity ast, Functor ast, Monad m) => [Fixity] -> ast () -> m (ast ())
 applyFixities fixs = liftM (fmap (const ())) . H.applyFixities fixs . fmap (const noSrcSpan)
-
--- omitted fixity functionality, new in haskell-source-exts-1.20:
--- assocNone, assocLeft, assocRight :: Assoc ()
---
--- askFixity :: [Fixity] -> QOp l -> (Assoc (), Int)
---
--- askFixityP :: [Fixity] -> QName l -> (Assoc (), Int)
---
--- askFix :: [Fixity] -> QName l -> (Assoc (), Int)
---
--- prefixMinusFixity :: (Assoc (), Int)
---
--- fixity :: Assoc () -> Int -> [String] -> [Fixity]
---
--- appFixDecls :: Monad m =>
---     Maybe (ModuleName SrcSpanInfo) ->
---     [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]
---
--- getFixities :: Maybe (ModuleName l) -> [Decl l] -> [Fixity]
---
--- getFixity :: Maybe (ModuleName l) -> Decl l -> [Fixity]
---
--- scrub :: Functor f => f a -> f ()
---
--- getBindFixities :: Binds l -> [Fixity]
---
--- leafFix :: Monad m =>
---     [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo)
---
--- leafFixP :: Monad m =>
---     [Fixity] -> Pat SrcSpanInfo -> m (Pat SrcSpanInfo)
diff --git a/src/Language/Haskell/Exts/Simple/Parser.hs b/src/Language/Haskell/Exts/Simple/Parser.hs
--- a/src/Language/Haskell/Exts/Simple/Parser.hs
+++ b/src/Language/Haskell/Exts/Simple/Parser.hs
@@ -25,6 +25,8 @@
  )
 
 import Language.Haskell.Exts.Simple.Syntax
+import Language.Haskell.Exts.Comments (Comment)
+import Control.Arrow (first)
 
 -- * Datatypes and Constructors
 
@@ -70,17 +72,17 @@
 parseModuleWithMode :: ParseMode -> String -> ParseResult Module
 parseModuleWithMode m = fmap (fmap (const ())) . H.parseModuleWithMode m
 
+parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])
+parseModuleWithComments m = fmap (first (fmap (const ()))) . H.parseModuleWithComments m
+
 parseExp :: String -> ParseResult Exp
 parseExp = fmap (fmap (const ())) . H.parseExp
 
 parseExpWithMode :: ParseMode -> String -> ParseResult Exp
 parseExpWithMode m = fmap (fmap (const ())) . H.parseExpWithMode m
 
-parseStmt :: String -> ParseResult Stmt
-parseStmt = fmap (fmap (const ())) . H.parseStmt
-
-parseStmtWithMode :: ParseMode -> String -> ParseResult Stmt
-parseStmtWithMode m = fmap (fmap (const ())) . H.parseStmtWithMode m
+parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment])
+parseExpWithComments m = fmap (first (fmap (const ()))) . H.parseExpWithComments m
 
 parsePat :: String -> ParseResult Pat
 parsePat = fmap (fmap (const ())) . H.parsePat
@@ -88,65 +90,47 @@
 parsePatWithMode :: ParseMode -> String -> ParseResult Pat
 parsePatWithMode m = fmap (fmap (const ())) . H.parsePatWithMode m
 
+parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment])
+parsePatWithComments m = fmap (first (fmap (const ()))) . H.parsePatWithComments m
+
 parseDecl :: String -> ParseResult Decl
 parseDecl = fmap (fmap (const ())) . H.parseDecl
 
 parseDeclWithMode :: ParseMode -> String -> ParseResult Decl
 parseDeclWithMode m = fmap (fmap (const ())) . H.parseDeclWithMode m
 
+parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment])
+parseDeclWithComments m = fmap (first (fmap (const ()))) . H.parseDeclWithComments m
+
 parseType :: String -> ParseResult Type
 parseType = fmap (fmap (const ())) . H.parseType
 
 parseTypeWithMode :: ParseMode -> String -> ParseResult Type
 parseTypeWithMode m = fmap (fmap (const ())) . H.parseTypeWithMode m
 
+parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment])
+parseTypeWithComments m = fmap (first (fmap (const ()))) . H.parseTypeWithComments m
+
+parseStmt :: String -> ParseResult Stmt
+parseStmt = fmap (fmap (const ())) . H.parseStmt
+
+parseStmtWithMode :: ParseMode -> String -> ParseResult Stmt
+parseStmtWithMode m = fmap (fmap (const ())) . H.parseStmtWithMode m
+
+parseStmtWithComments :: ParseMode -> String -> ParseResult  (Stmt, [Comment])
+parseStmtWithComments m = fmap (first (fmap (const ()))) . H.parseStmtWithComments m
+
 parseImportDecl :: String -> ParseResult ImportDecl
 parseImportDecl = fmap (fmap (const ())) . H.parseImportDecl
 
 parseImportDeclWithMode :: ParseMode -> String -> ParseResult ImportDecl
 parseImportDeclWithMode m = fmap (fmap (const ())) . H.parseImportDeclWithMode m
 
+parseImportDeclWithComments :: ParseMode -> String -> ParseResult (ImportDecl, [Comment])
+parseImportDeclWithComments m = fmap (first (fmap (const ()))) . H.parseImportDeclWithComments m
+
 getTopPragmas :: String -> ParseResult [ModulePragma]
 getTopPragmas = fmap (fmap (fmap (const ()))) . H.getTopPragmas
-
--- omitted parsing functions, new in haskell-source-exts-1.20:
---
--- normalParser :: AppFixity a =>
---     P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)
---
--- normalParserNoFixity ::
---     P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)
---
--- parseModuleWithComments ::
---     ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])
---
--- parseExpWithComments ::
---     ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])
---
--- parsePatWithComments ::
---     ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])
---
--- parseDeclWithComments ::
---     ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])
---
--- parseTypeWithComments ::
---     ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])
---
--- parseStmt ::
---     String -> ParseResult (Stmt SrcSpanInfo)
---
--- parseStmtWithMode ::
---     ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)
---
--- parseStmtWithComments ::
---     ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])
---
---     ParseMode -> String -> ParseResult (ImportDecl SrcSpanInfo, [Comment])
--- parseImportDeclWithComments ::
---
--- nglistParserNoFixity ::
---     P ([a SrcSpanInfo], [SrcSpan], SrcSpanInfo) ->
---     Maybe [Fixity] -> P (NonGreedy (ListOf (a SrcSpanInfo)))
 
 -- omitted: data NonGreedy a
 
diff --git a/src/Language/Haskell/Exts/Simple/Syntax.hs b/src/Language/Haskell/Exts/Simple/Syntax.hs
--- a/src/Language/Haskell/Exts/Simple/Syntax.hs
+++ b/src/Language/Haskell/Exts/Simple/Syntax.hs
@@ -176,7 +176,7 @@
 pattern DefaultDecl a = H.DefaultDecl () (a :: [Type]) :: Decl
 pattern SpliceDecl a = H.SpliceDecl () (a :: Exp) :: Decl
 pattern TypeSig a b = H.TypeSig () (a :: [Name]) (b :: Type) :: Decl
-pattern PatSynSig a b c d e = H.PatSynSig () (a :: [Name]) (b :: (Maybe [TyVarBind])) (c :: (Maybe Context)) (d :: (Maybe Context)) (e :: Type) :: Decl
+pattern PatSynSig a b c d e f = H.PatSynSig () (a :: [Name]) (b :: (Maybe [TyVarBind])) (c :: (Maybe Context)) (d :: (Maybe [TyVarBind])) (e :: (Maybe Context)) (f :: Type) :: Decl
 pattern FunBind a = H.FunBind () (a :: [Match]) :: Decl
 pattern PatBind a b c = H.PatBind () (a :: Pat) (b :: Rhs) (c :: (Maybe Binds)) :: Decl
 pattern PatSyn a b c = H.PatSyn () (a :: Pat) (b :: Pat) (c :: PatternSynDirection) :: Decl
@@ -267,6 +267,7 @@
 pattern DerivStock = H.DerivStock () :: DerivStrategy
 pattern DerivAnyclass = H.DerivAnyclass () :: DerivStrategy
 pattern DerivNewtype = H.DerivNewtype () :: DerivStrategy
+pattern DerivVia a = H.DerivVia () (a :: Type) :: DerivStrategy
 
 -- ** `H.Binds`
 type Binds = H.Binds ()
@@ -298,7 +299,7 @@
 
 -- ** `H.GadtDecl`
 type GadtDecl = H.GadtDecl ()
-pattern GadtDecl a b c = H.GadtDecl () (a :: Name) (b :: (Maybe [FieldDecl])) (c :: Type) :: GadtDecl
+pattern GadtDecl a b c d e = H.GadtDecl () (a :: Name) (b :: (Maybe [TyVarBind])) (c :: (Maybe Context)) (d :: (Maybe [FieldDecl])) (e :: Type) :: GadtDecl
 
 -- ** `H.ClassDecl`
 type ClassDecl = H.ClassDecl ()
@@ -339,6 +340,7 @@
 -- ** `H.Type`
 type Type = H.Type ()
 pattern TyForall a b c = H.TyForall () (a :: (Maybe [TyVarBind])) (b :: (Maybe Context)) (c :: Type) :: Type
+pattern TyStar = H.TyStar () :: Type
 pattern TyFun a b = H.TyFun () (a :: Type) (b :: Type) :: Type
 pattern TyTuple a b = H.TyTuple () (a :: Boxed) (b :: [Type]) :: Type
 pattern TyUnboxedSum a = H.TyUnboxedSum () (a :: [Type]) :: Type
@@ -379,14 +381,9 @@
 pattern UnkindedVar a = H.UnkindedVar () (a :: Name) :: TyVarBind
 
 -- ** `H.Kind`
+
+-- | Note that `Kind` is an alias for `Type` since haskell-src-exts-1.21.
 type Kind = H.Kind ()
-pattern KindStar = H.KindStar () :: Kind
-pattern KindFn a b = H.KindFn () (a :: Kind) (b :: Kind) :: Kind
-pattern KindParen a = H.KindParen () (a :: Kind) :: Kind
-pattern KindVar a = H.KindVar () (a :: QName) :: Kind
-pattern KindApp a b = H.KindApp () (a :: Kind) (b :: Kind) :: Kind
-pattern KindTuple a = H.KindTuple () (a :: [Kind]) :: Kind
-pattern KindList a = H.KindList () (a :: Kind) :: Kind
 
 -- ** `H.FunDep`
 type FunDep = H.FunDep ()
@@ -710,6 +707,9 @@
 tuple_con_name :: Boxed -> Int -> QName
 tuple_con_name = H.tuple_con_name ()
 
+list_con_name :: QName
+list_con_name = H.list_con_name ()
+
 list_cons_name :: QName
 list_cons_name = H.list_cons_name ()
 
@@ -737,7 +737,7 @@
 hole_name :: QName
 hole_name = H.hole_name ()
 
-export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name, stdcall_name, ccall_name, cplusplus_name, dotnet_name, jvm_name, js_name, javascript_name, capi_name, forall_name, family_name, role_name, stock_name, anyclass_name :: Name
+export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name, stdcall_name, ccall_name, cplusplus_name, dotnet_name, jvm_name, js_name, javascript_name, capi_name, forall_name, family_name, role_name, stock_name, anyclass_name, via_name :: Name
 export_name = H.export_name ()
 safe_name = H.safe_name ()
 unsafe_name = H.unsafe_name ()
@@ -756,6 +756,7 @@
 role_name = H.role_name ()
 stock_name = H.stock_name ()
 anyclass_name = H.anyclass_name ()
+via_name = H.via_name ()
 
 unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: QName
 unit_tycon_name = H.unit_tycon_name ()
