diff --git a/burrito.cabal b/burrito.cabal
--- a/burrito.cabal
+++ b/burrito.cabal
@@ -1,5 +1,7 @@
+cabal-version: 2.2
+
 name: burrito
-version: 1.1.0.0
+version: 1.1.0.1
 
 synopsis: Parse and render URI templates.
 description:
@@ -20,7 +22,6 @@
   it should work with other schemes as well.
 
 build-type: Simple
-cabal-version: >= 1.10
 category: Network
 extra-source-files: README.markdown
 license-file: LICENSE.markdown
@@ -31,7 +32,29 @@
   location: https://github.com/tfausak/burrito
   type: git
 
+common basics
+  default-language: Haskell2010
+  ghc-options:
+    -Weverything
+    -Wno-all-missed-specialisations
+    -Wno-implicit-prelude
+    -Wno-missing-exported-signatures
+    -Wno-missing-import-lists
+    -Wno-safe
+    -Wno-unsafe
+
+  if impl(ghc >= 8.8)
+    ghc-options:
+      -Wno-missing-deriving-strategies
+
+  if impl(ghc >= 8.10)
+    ghc-options:
+      -Wno-missing-safe-haskell-mode
+      -Wno-prepositive-qualified-module
+
 library
+  import: basics
+
   build-depends:
     base >= 4.12.0 && < 4.15
     , bytestring >= 0.10.8 && < 0.11
@@ -40,7 +63,6 @@
     , template-haskell >= 2.14.0 && < 2.17
     , text >= 1.2.3 && < 1.3
     , transformers >= 0.5.6 && < 0.6
-  default-language: Haskell98
   exposed-modules:
     Burrito
     Burrito.Internal.Expand
@@ -63,27 +85,11 @@
     Burrito.Internal.Type.Token
     Burrito.Internal.Type.Value
     Burrito.Internal.Type.Variable
-  ghc-options:
-    -Weverything
-    -Wno-all-missed-specialisations
-    -Wno-implicit-prelude
-    -Wno-missing-export-lists
-    -Wno-missing-exported-signatures
-    -Wno-missing-local-signatures
-    -Wno-monomorphism-restriction
-    -Wno-safe
   hs-source-dirs: src/lib
 
-  if impl(ghc >= 8.8)
-    ghc-options:
-      -Wno-missing-deriving-strategies
-
-  if impl(ghc >= 8.10)
-    ghc-options:
-      -Wno-missing-safe-haskell-mode
-      -Wno-prepositive-qualified-module
-
 test-suite test
+  import: basics
+
   build-depends:
     base -any
     , burrito -any
@@ -91,7 +97,6 @@
     , hspec >= 2.7.1 && < 2.8
     , QuickCheck >= 2.13.2 && < 2.14
     , text -any
-  default-language: Haskell98
   hs-source-dirs: src/test
   main-is: Main.hs
   type: exitcode-stdio-1.0
diff --git a/src/lib/Burrito/Internal/Expand.hs b/src/lib/Burrito/Internal/Expand.hs
--- a/src/lib/Burrito/Internal/Expand.hs
+++ b/src/lib/Burrito/Internal/Expand.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-missing-export-lists #-}
+
 module Burrito.Internal.Expand where
 
 import qualified Burrito.Internal.Render as Render
diff --git a/src/lib/Burrito/Internal/Match.hs b/src/lib/Burrito/Internal/Match.hs
--- a/src/lib/Burrito/Internal/Match.hs
+++ b/src/lib/Burrito/Internal/Match.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-missing-export-lists #-}
+
 module Burrito.Internal.Match where
 
 import qualified Burrito.Internal.Expand as Expand
diff --git a/src/lib/Burrito/Internal/Parse.hs b/src/lib/Burrito/Internal/Parse.hs
--- a/src/lib/Burrito/Internal/Parse.hs
+++ b/src/lib/Burrito/Internal/Parse.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-missing-export-lists #-}
+
 {-# LANGUAGE FlexibleContexts #-}
 
 module Burrito.Internal.Parse where
diff --git a/src/lib/Burrito/Internal/Render.hs b/src/lib/Burrito/Internal/Render.hs
--- a/src/lib/Burrito/Internal/Render.hs
+++ b/src/lib/Burrito/Internal/Render.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-missing-export-lists #-}
+
 module Burrito.Internal.Render where
 
 import qualified Burrito.Internal.Type.Case as Case
diff --git a/src/lib/Burrito/Internal/TH.hs b/src/lib/Burrito/Internal/TH.hs
--- a/src/lib/Burrito/Internal/TH.hs
+++ b/src/lib/Burrito/Internal/TH.hs
@@ -1,4 +1,4 @@
-module Burrito.Internal.TH where
+module Burrito.Internal.TH (uriTemplate) where
 
 import qualified Burrito.Internal.Parse as Parse
 import qualified Language.Haskell.TH.Quote as TH
diff --git a/src/lib/Burrito/Internal/Type/Case.hs b/src/lib/Burrito/Internal/Type/Case.hs
--- a/src/lib/Burrito/Internal/Type/Case.hs
+++ b/src/lib/Burrito/Internal/Type/Case.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Case where
+module Burrito.Internal.Type.Case (Case(..)) where
 
 import qualified Data.Data as Data
 
diff --git a/src/lib/Burrito/Internal/Type/Character.hs b/src/lib/Burrito/Internal/Type/Character.hs
--- a/src/lib/Burrito/Internal/Type/Character.hs
+++ b/src/lib/Burrito/Internal/Type/Character.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Character where
+module Burrito.Internal.Type.Character (Character(..)) where
 
 import qualified Burrito.Internal.Type.Digit as Digit
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Digit.hs b/src/lib/Burrito/Internal/Type/Digit.hs
--- a/src/lib/Burrito/Internal/Type/Digit.hs
+++ b/src/lib/Burrito/Internal/Type/Digit.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Digit where
+module Burrito.Internal.Type.Digit (Digit(..), fromChar, fromWord8, toWord8) where
 
 import qualified Burrito.Internal.Type.Case as Case
 import qualified Data.Bits as Bits
@@ -55,6 +55,7 @@
 fromWord8 :: Word.Word8 -> (Digit, Digit)
 fromWord8 x =
   let
+    f :: Word.Word8 -> Digit
     f y = case y of
       0x0 -> Ox0
       0x1 -> Ox1
@@ -78,6 +79,7 @@
 toWord8 :: Digit -> Digit -> Word.Word8
 toWord8 x y =
   let
+    f :: Digit -> Word.Word8
     f z = case z of
       Ox0 -> 0x0
       Ox1 -> 0x1
diff --git a/src/lib/Burrito/Internal/Type/Expression.hs b/src/lib/Burrito/Internal/Type/Expression.hs
--- a/src/lib/Burrito/Internal/Type/Expression.hs
+++ b/src/lib/Burrito/Internal/Type/Expression.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Expression where
+module Burrito.Internal.Type.Expression (Expression(..)) where
 
 import qualified Burrito.Internal.Type.Operator as Operator
 import qualified Burrito.Internal.Type.Variable as Variable
diff --git a/src/lib/Burrito/Internal/Type/Field.hs b/src/lib/Burrito/Internal/Type/Field.hs
--- a/src/lib/Burrito/Internal/Type/Field.hs
+++ b/src/lib/Burrito/Internal/Type/Field.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Field where
+module Burrito.Internal.Type.Field (Field(..)) where
 
 import qualified Burrito.Internal.Type.Character as Character
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Literal.hs b/src/lib/Burrito/Internal/Type/Literal.hs
--- a/src/lib/Burrito/Internal/Type/Literal.hs
+++ b/src/lib/Burrito/Internal/Type/Literal.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Literal where
+module Burrito.Internal.Type.Literal (Literal(..)) where
 
 import qualified Burrito.Internal.Type.Character as Character
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Match.hs b/src/lib/Burrito/Internal/Type/Match.hs
--- a/src/lib/Burrito/Internal/Type/Match.hs
+++ b/src/lib/Burrito/Internal/Type/Match.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Match where
+module Burrito.Internal.Type.Match (Match(..)) where
 
 import qualified Burrito.Internal.Type.MaxLength as MaxLength
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/MaxLength.hs b/src/lib/Burrito/Internal/Type/MaxLength.hs
--- a/src/lib/Burrito/Internal/Type/MaxLength.hs
+++ b/src/lib/Burrito/Internal/Type/MaxLength.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.MaxLength where
+module Burrito.Internal.Type.MaxLength (MaxLength(..)) where
 
 import qualified Data.Data as Data
 
diff --git a/src/lib/Burrito/Internal/Type/Modifier.hs b/src/lib/Burrito/Internal/Type/Modifier.hs
--- a/src/lib/Burrito/Internal/Type/Modifier.hs
+++ b/src/lib/Burrito/Internal/Type/Modifier.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Modifier where
+module Burrito.Internal.Type.Modifier (Modifier(..)) where
 
 import qualified Burrito.Internal.Type.MaxLength as MaxLength
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Name.hs b/src/lib/Burrito/Internal/Type/Name.hs
--- a/src/lib/Burrito/Internal/Type/Name.hs
+++ b/src/lib/Burrito/Internal/Type/Name.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Name where
+module Burrito.Internal.Type.Name (Name(..)) where
 
 import qualified Burrito.Internal.Type.Field as Field
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Operator.hs b/src/lib/Burrito/Internal/Type/Operator.hs
--- a/src/lib/Burrito/Internal/Type/Operator.hs
+++ b/src/lib/Burrito/Internal/Type/Operator.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Operator where
+module Burrito.Internal.Type.Operator (Operator(..)) where
 
 import qualified Data.Data as Data
 
diff --git a/src/lib/Burrito/Internal/Type/Template.hs b/src/lib/Burrito/Internal/Type/Template.hs
--- a/src/lib/Burrito/Internal/Type/Template.hs
+++ b/src/lib/Burrito/Internal/Type/Template.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Template where
+module Burrito.Internal.Type.Template (Template(..)) where
 
 import qualified Burrito.Internal.Type.Token as Token
 import qualified Data.Data as Data
diff --git a/src/lib/Burrito/Internal/Type/Token.hs b/src/lib/Burrito/Internal/Type/Token.hs
--- a/src/lib/Burrito/Internal/Type/Token.hs
+++ b/src/lib/Burrito/Internal/Type/Token.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Token where
+module Burrito.Internal.Type.Token (Token(..)) where
 
 import qualified Burrito.Internal.Type.Expression as Expression
 import qualified Burrito.Internal.Type.Literal as Literal
diff --git a/src/lib/Burrito/Internal/Type/Value.hs b/src/lib/Burrito/Internal/Type/Value.hs
--- a/src/lib/Burrito/Internal/Type/Value.hs
+++ b/src/lib/Burrito/Internal/Type/Value.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Value where
+module Burrito.Internal.Type.Value (Value(..)) where
 
 import qualified Data.Data as Data
 import qualified Data.Map as Map
diff --git a/src/lib/Burrito/Internal/Type/Variable.hs b/src/lib/Burrito/Internal/Type/Variable.hs
--- a/src/lib/Burrito/Internal/Type/Variable.hs
+++ b/src/lib/Burrito/Internal/Type/Variable.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module Burrito.Internal.Type.Variable where
+module Burrito.Internal.Type.Variable (Variable(..)) where
 
 import qualified Burrito.Internal.Type.Modifier as Modifier
 import qualified Burrito.Internal.Type.Name as Name
diff --git a/src/test/Main.hs b/src/test/Main.hs
--- a/src/test/Main.hs
+++ b/src/test/Main.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-monomorphism-restriction #-}
+
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes #-}
 
