diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,15 @@
 # Revision history for network-arbitrary
 
+## 0.7.0.0  -- 2020-11-30
+
+* Update project structure
+  * stylish-haskell configuration
+  * updated travis configuration
+  * pre-commit
+  * nix-shell with mkShell
+* Bump base dependence version
+* Generate relative references as well
+
 ## 0.6.0.0  -- 2020-04-11
 
 * Update project structure.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Description
 
-[Arbitrary] Instances for [Network][network-category] Types
+[Arbitrary][arbitrary] Instances for [Network][network-category] Types
 
 I am providing code in the repository to you under an open source license.
 Because this is my personal repository, the license you receive to my code is
@@ -8,7 +8,7 @@
 
 # Getting Started
 
-Documentation is available on [Hackage].  A great guide to [QuickCheck] is
+Documentation is available on [Hackage][hackage].  A great guide to [QuickCheck][quickcheck] is
 <https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html>.
 
 # Reporting Issues
@@ -18,7 +18,7 @@
 that it is reported.
 
 If you would like to contribute a fix or new feature; please, submit a pull
-request.  This project follows [git flow] and utilizes [travis] to automatically
+request.  This project follows [git flow][git flow] and utilizes [travis][travis] to automatically
 check pull requests before a manual review.
 
 # Contributors
@@ -27,11 +27,10 @@
 copyrights and other information.  If you submit a pull request and would like
 attribution; please, add yourself to the `COPYRIGHT` file.
 
-[Arbitrary]: https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck-Arbitrary.html#t:Arbitrary
+[arbitrary]: https://hackage.haskell.org/package/QuickCheck/docs/Test-QuickCheck-Arbitrary.html#t:Arbitrary
 [git flow]: http://nvie.com/posts/a-successful-git-branching-model/
-[Hackage]: https://hackage.haskell.org/package/network-arbitrary
-[Haskell]: https://www.haskell.org/
+[hackage]: https://hackage.haskell.org/package/network-arbitrary
 [issues]: https://github.com/alunduil/network-arbitrary/issues
 [network-category]: https://hackage.haskell.org/packages/#cat:Network
-[QuickCheck]: https://hackage.haskell.org/package/QuickCheck
+[quickcheck]: https://hackage.haskell.org/package/QuickCheck
 [travis]: https://travis-ci.org/alunduil/network-arbitrary
diff --git a/network-arbitrary.cabal b/network-arbitrary.cabal
--- a/network-arbitrary.cabal
+++ b/network-arbitrary.cabal
@@ -1,5 +1,5 @@
 name:                network-arbitrary
-version:             0.6.0.0
+version:             0.7.0.0
 
 license:             MIT
 license-file:        LICENSE
@@ -47,12 +47,12 @@
   default-language:    Haskell2010
 
   build-depends:
-      base >= 4.6 && < 4.14
+      base >= 4.6 && < 4.15
     , bytestring == 0.10.*
     , http-media >= 0.6 && < 0.9
     , http-types >= 0.9 && < 0.13
-    , network-uri == 2.6.*
-    , QuickCheck >= 2.9 && < 2.14
+    , network-uri >= 2.6 && < 2.8
+    , QuickCheck >= 2.9 && < 2.15
 
   exposed-modules:
       Network.Arbitrary
@@ -84,14 +84,14 @@
   default-language: Haskell2010
 
   build-depends:
-      base >= 4.6 && < 4.14
+      base >= 4.6 && < 4.15
     , bytestring == 0.10.*
     , case-insensitive == 1.2.*
     , hspec >= 2.4 && < 2.8
     , http-media >= 0.6 && < 0.9
     , http-types >= 0.9 && < 0.13
-    , network-uri == 2.6.*
-    , QuickCheck >= 2.9 && < 2.14
+    , network-uri >= 2.6 && < 2.8
+    , QuickCheck >= 2.9 && < 2.15
     , test-invariant == 0.4.*
 
   build-tool-depends:
diff --git a/src/Network/Arbitrary.hs b/src/Network/Arbitrary.hs
--- a/src/Network/Arbitrary.hs
+++ b/src/Network/Arbitrary.hs
@@ -10,8 +10,6 @@
   ()
 where
 
-import           Network.HTTP.Media.MediaType.Arbitrary
-                                                ( )
-import           Network.HTTP.Types.Method.Arbitrary
-                                                ( )
-import           Network.URI.Arbitrary          ( )
+import Network.HTTP.Media.MediaType.Arbitrary ()
+import Network.HTTP.Types.Method.Arbitrary ()
+import Network.URI.Arbitrary ()
diff --git a/src/Network/HTTP/Media/MediaType/Arbitrary.hs b/src/Network/HTTP/Media/MediaType/Arbitrary.hs
--- a/src/Network/HTTP/Media/MediaType/Arbitrary.hs
+++ b/src/Network/HTTP/Media/MediaType/Arbitrary.hs
@@ -12,28 +12,41 @@
   ()
 where
 
-import           Prelude                 hiding ( concat )
+import Prelude hiding
+  ( concat
+  )
 
-import           Control.Applicative            ( (<*>) )
-import           Control.Monad                  ( replicateM )
-import           Data.ByteString                ( append
-                                                , concat
-                                                , ByteString
-                                                )
-import           Data.ByteString.Char8          ( singleton )
-import           Data.Functor                   ( (<$>) )
-import           Network.HTTP.Media.MediaType   ( (/:)
-                                                , (//)
-                                                , MediaType
-                                                )
-import           Test.QuickCheck                ( Arbitrary(arbitrary)
-                                                , choose
-                                                , elements
-                                                , Gen
-                                                , listOf
-                                                , oneof
-                                                , sized
-                                                )
+import Control.Applicative
+  ( (<*>)
+  )
+import Control.Monad
+  ( replicateM
+  )
+import Data.ByteString
+  ( ByteString
+  , append
+  , concat
+  )
+import Data.ByteString.Char8
+  ( singleton
+  )
+import Data.Functor
+  ( (<$>)
+  )
+import Network.HTTP.Media.MediaType
+  ( MediaType
+  , (//)
+  , (/:)
+  )
+import Test.QuickCheck
+  ( Arbitrary (arbitrary)
+  , Gen
+  , choose
+  , elements
+  , listOf
+  , oneof
+  , sized
+  )
 
 --
 --
diff --git a/src/Network/HTTP/Types/Method/Arbitrary.hs b/src/Network/HTTP/Types/Method/Arbitrary.hs
--- a/src/Network/HTTP/Types/Method/Arbitrary.hs
+++ b/src/Network/HTTP/Types/Method/Arbitrary.hs
@@ -12,10 +12,13 @@
   ()
 where
 
-import           Network.HTTP.Types.Method      ( StdMethod(..) )
-import           Test.QuickCheck                ( Arbitrary(arbitrary)
-                                                , elements
-                                                )
+import Network.HTTP.Types.Method
+  ( StdMethod (..)
+  )
+import Test.QuickCheck
+  ( Arbitrary (arbitrary)
+  , elements
+  )
 
 instance Arbitrary StdMethod where
   arbitrary =
diff --git a/src/Network/URI/Arbitrary.hs b/src/Network/URI/Arbitrary.hs
--- a/src/Network/URI/Arbitrary.hs
+++ b/src/Network/URI/Arbitrary.hs
@@ -14,29 +14,36 @@
   ()
 where
 
-import           Control.Applicative            ( (<$>)
-                                                , (<*>)
-                                                )
-import           Control.Monad                  ( replicateM )
-import           Data.List                      ( intercalate )
-import           Network.URI                    ( parseURIReference
-                                                , URI(..)
-                                                , URIAuth(..)
-                                                , uriToString
-                                                )
-import           Test.QuickCheck                ( Arbitrary(arbitrary, shrink)
-                                                , choose
-                                                , elements
-                                                , Gen
-                                                , listOf
-                                                , listOf1
-                                                , oneof
-                                                , suchThat
-                                                )
+import Control.Applicative
+  ( (<$>)
+  , (<*>)
+  )
+import Control.Monad
+  ( replicateM
+  )
+import Data.List
+  ( intercalate
+  )
+import Network.URI
+  ( URI (..)
+  , URIAuth (..)
+  , parseURIReference
+  , uriToString
+  )
+import Test.QuickCheck
+  ( Arbitrary (arbitrary, shrink)
+  , Gen
+  , choose
+  , elements
+  , listOf
+  , listOf1
+  , oneof
+  , suchThat
+  )
 
 instance Arbitrary URI where
   arbitrary = do
-    uriScheme    <- scheme
+    uriScheme    <- oneof [return "", scheme]
     uriAuthority <- arbitrary :: Gen (Maybe URIAuth)
     uriPath <- path (null uriScheme) $ maybe True emptyAuthority uriAuthority
     uriQuery     <- oneof [query, return ""]
@@ -69,9 +76,9 @@
 
 -- * RFC 3986 Generators
 --
---   Some generators are handled by the 'Arbitrary' instances above, and others
---   are folded into symbols that are preceeded or followed by identifying
---   tokens.
+--   Some generators are handled by the 'Arbitrary' instances above, and
+--   others are folded into symbols that are preceded or followed by
+--   identifying tokens.
 
 scheme :: Gen String
 scheme = do
diff --git a/test/Network/HTTP/Media/MediaType/ArbitrarySpec.hs b/test/Network/HTTP/Media/MediaType/ArbitrarySpec.hs
--- a/test/Network/HTTP/Media/MediaType/ArbitrarySpec.hs
+++ b/test/Network/HTTP/Media/MediaType/ArbitrarySpec.hs
@@ -12,21 +12,30 @@
   )
 where
 
-import           Prelude                 hiding ( null )
+import Prelude hiding
+  ( null
+  )
 
-import           Data.ByteString                ( null )
-import           Data.CaseInsensitive           ( original )
-import           Network.HTTP.Media.MediaType   ( mainType
-                                                , subType
-                                                )
-import           Test.Hspec                     ( describe
-                                                , hspec
-                                                , Spec
-                                                )
-import           Test.Hspec.QuickCheck          ( prop )
+import Data.ByteString
+  ( null
+  )
+import Data.CaseInsensitive
+  ( original
+  )
+import Network.HTTP.Media.MediaType
+  ( mainType
+  , subType
+  )
+import Test.Hspec
+  ( Spec
+  , describe
+  , hspec
+  )
+import Test.Hspec.QuickCheck
+  ( prop
+  )
 
-import           Network.HTTP.Media.MediaType.Arbitrary
-                                                ( )
+import Network.HTTP.Media.MediaType.Arbitrary ()
 
 main :: IO ()
 main = hspec spec
diff --git a/test/Network/HTTP/Types/Method/ArbitrarySpec.hs b/test/Network/HTTP/Types/Method/ArbitrarySpec.hs
--- a/test/Network/HTTP/Types/Method/ArbitrarySpec.hs
+++ b/test/Network/HTTP/Types/Method/ArbitrarySpec.hs
@@ -12,18 +12,23 @@
   )
 where
 
-import           Network.HTTP.Types.Method      ( parseMethod
-                                                , renderStdMethod
-                                                )
-import           Test.Hspec                     ( describe
-                                                , hspec
-                                                , Spec
-                                                )
-import           Test.Hspec.QuickCheck          ( prop )
-import           Test.Invariant                 ( (<=>) )
+import Network.HTTP.Types.Method
+  ( parseMethod
+  , renderStdMethod
+  )
+import Test.Hspec
+  ( Spec
+  , describe
+  , hspec
+  )
+import Test.Hspec.QuickCheck
+  ( prop
+  )
+import Test.Invariant
+  ( (<=>)
+  )
 
-import           Network.HTTP.Types.Method.Arbitrary
-                                                ( )
+import Network.HTTP.Types.Method.Arbitrary ()
 
 main :: IO ()
 main = hspec spec
diff --git a/test/Network/URI/ArbitrarySpec.hs b/test/Network/URI/ArbitrarySpec.hs
--- a/test/Network/URI/ArbitrarySpec.hs
+++ b/test/Network/URI/ArbitrarySpec.hs
@@ -12,17 +12,21 @@
   )
 where
 
-import           Network.URI                    ( isURIReference
-                                                , parseURIReference
-                                                , uriToString
-                                                )
-import           Test.Hspec                     ( describe
-                                                , hspec
-                                                , Spec
-                                                )
-import           Test.Hspec.QuickCheck          ( prop )
+import Network.URI
+  ( isURIReference
+  , parseURIReference
+  , uriToString
+  )
+import Test.Hspec
+  ( Spec
+  , describe
+  , hspec
+  )
+import Test.Hspec.QuickCheck
+  ( prop
+  )
 
-import           Network.URI.Arbitrary          ( )
+import Network.URI.Arbitrary ()
 
 main :: IO ()
 main = hspec spec
