diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,8 @@
+0.4.1.0
+
+* Add support for `GHC 8.2.*`
+* Add support for `aeson-1.2.*`
+
 0.4.0.0
 
 * Remove upper bound on depedencies.
diff --git a/jsonschema-gen.cabal b/jsonschema-gen.cabal
--- a/jsonschema-gen.cabal
+++ b/jsonschema-gen.cabal
@@ -1,5 +1,5 @@
 name:                jsonschema-gen
-version:             0.4.0.0
+version:             0.4.1.0
 synopsis:            JSON Schema generator from Algebraic data type
 description:         This library contains a JSON Schema generator.
 homepage:            https://github.com/yuga/jsonschema-gen
@@ -25,7 +25,7 @@
                        Data.JSON.Schema.Generator.Generic
                        Data.JSON.Schema.Generator.Types
 
-  build-depends:       base >=4.6 && <4.10
+  build-depends:       base >=4.6 && <4.11
                      , bytestring >=0.10
                      , containers >=0.5
                      , tagged >=0.7
diff --git a/src/Data/JSON/Schema/Generator/Convert.hs b/src/Data/JSON/Schema/Generator/Convert.hs
--- a/src/Data/JSON/Schema/Generator/Convert.hs
+++ b/src/Data/JSON/Schema/Generator/Convert.hs
@@ -146,8 +146,8 @@
 jsOneOf _ _ = []
 
 jsRequired :: A.Options -> Schema -> [(Text,A.Value)]
-jsRequired       A.Options {A.omitNothingFields = True}  SCObject {scRequired = r  } = [("required", array r)]
-jsRequired opts@(A.Options {A.omitNothingFields = _   }) SCObject {scProperties = p} = [("required", array . map fst $ toMap opts p)]
+jsRequired      (A.omitNothingFields -> True) SCObject {scRequired = r  } = [("required", array r)]
+jsRequired opts@(A.omitNothingFields -> _   ) SCObject {scProperties = p} = [("required", array . map fst $ toMap opts p)]
 jsRequired _ _ = []
 
 jsDefinitions :: A.Options -> Schema -> [(Text,A.Value)]
@@ -199,7 +199,7 @@
 consAsEnum s = error ("conAsEnum could not handle: " ++ show s)
 
 conAsObject :: A.Options -> SchemaChoice -> A.Value
-conAsObject opts@(A.Options {A.sumEncoding = A.TwoElemArray}) sc =
+conAsObject opts@(A.sumEncoding -> A.TwoElemArray) sc =
     object $
         if sctTitle sc == "" then [] else [ ("title", string $ sctTitle sc) ]
         `mappend`
@@ -219,12 +219,10 @@
         ]
 
 conAsObject' :: A.Options -> SchemaChoice -> A.Value
-conAsObject' opts@(A.Options {A.sumEncoding = A.TaggedObject tFld cFld}) sc = conAsTag   opts (pack tFld) (pack cFld) sc
-conAsObject' opts@(A.Options {A.sumEncoding = A.TwoElemArray          }) sc = conAsArray opts sc
-conAsObject' opts@(A.Options {A.sumEncoding = A.ObjectWithSingleField }) sc = conAsMap   opts sc
-#if MIN_VERSION_aeson(1,0,0)
-conAsObject' _opts@(A.Options {A.sumEncoding = A.UntaggedValue })       _sc = error "Unsupported option"
-#endif
+conAsObject' opts@(A.sumEncoding -> A.TaggedObject tFld cFld) sc = conAsTag   opts (pack tFld) (pack cFld) sc
+conAsObject' opts@(A.sumEncoding -> A.TwoElemArray          ) sc = conAsArray opts sc
+conAsObject' opts@(A.sumEncoding -> A.ObjectWithSingleField ) sc = conAsMap   opts sc
+conAsObject' _opts {- @(A.sumEncoding -> A.UntaggedValue) -} _sc = error "Unsupported option"
 
 conAsTag :: A.Options -> Text -> Text ->  SchemaChoice -> A.Value
 conAsTag opts tFld cFld (SCChoiceEnum  tag _)      = object [(tFld, object [("enum", array [tag])]), (cFld, conToArray opts [])]
@@ -258,8 +256,8 @@
     , ("additionalProperties", false)
     ]
   where
-    required A.Options {A.omitNothingFields = True} = array rq
-    required A.Options {A.omitNothingFields = _   } = array . map fst $ toMap opts mp
+    required (A.omitNothingFields -> True) = array rq
+    required (A.omitNothingFields -> _   ) = array . map fst $ toMap opts mp
 
 toMap :: A.Options -> [(Text,Schema)] -> [(Text,A.Value)]
 toMap opts mp = map (\(n,v) -> (n,convert' False opts v)) mp
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -115,10 +115,14 @@
 --
 
 optToStr :: String -> A.Options -> String
-optToStr symbol A.Options { A.allNullaryToStringTag = a, A.omitNothingFields = b, A.sumEncoding = c } =
+optToStr symbol aopts =
     "# " ++ symbol ++ " (allNullaryToStringTag: " ++ show a
                    ++ ", omitNothingFields: " ++ show b
                    ++ ", sumEncoding: " ++ showC c ++ ")"
+  where
+    a = A.allNullaryToStringTag aopts
+    b = A.omitNothingFields aopts
+    c = A.sumEncoding aopts
 
 showC :: A.SumEncoding -> String
 showC A.TwoElemArray = "array"
@@ -178,8 +182,12 @@
       where
         modName = moduleName (undefined :: D1 d f p)
         typName = datatypeName (undefined :: D1 d f p)
-    schemaSuffix opts A.Options { A.allNullaryToStringTag = a, A.omitNothingFields = b, A.sumEncoding = c } _ =
+    schemaSuffix opts aopts _ =
         show a ++ "." ++ show b ++ "." ++ showC c ++ G.schemaIdSuffix opts
+      where
+        a = A.allNullaryToStringTag aopts
+        b = A.omitNothingFields aopts
+        c = A.sumEncoding aopts
 
 schemaOptions :: G.Options
 schemaOptions = G.defaultOptions
