diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -50,10 +50,10 @@
 
 ### Publishing to Hackage
 
-`stack sdist` to build publishable .tar.gz., and then we need to upload it manually to Hackage.
+First, make sure to update the version of package in package.yaml, if needed.
 
-Check if Hackage correctly built the Haddock docs -> if not, you need to upload them manually (check Hackage webpage for instructions, it should be smth like `cabal v2-haddock --haddock-for-hackage --enable-doc` and then `cabal upload -d --publish <path_to_docs.tar.gz>`).
+Then, `stack sdist` to build publishable .tar.gz., and then we need to upload it manually to Hackage.
 
-Make sure to update the version of package in package.yaml.
+Check if Hackage correctly built the Haddock docs -> if not, you need to upload them manually (check Hackage webpage for instructions, it should be smth like `cabal v2-haddock --haddock-for-hackage --enable-doc` and then `cabal upload -d --publish <path_to_docs.tar.gz>`).
 
 We should also tag the commit in git with version tag (e.g. v1.0.0.0) so we know which version of code was used to produce that release.
diff --git a/src/StrongPath/Internal.hs b/src/StrongPath/Internal.hs
--- a/src/StrongPath/Internal.hs
+++ b/src/StrongPath/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveLift #-}
 
 module StrongPath.Internal
@@ -25,6 +26,7 @@
 where
 
 import Control.Monad.Catch (MonadThrow, throwM)
+import Data.Data (Data)
 import Language.Haskell.TH.Syntax (Lift)
 import qualified Path as P
 import qualified Path.Posix as PP
@@ -74,29 +76,29 @@
   | RelFileP (PP.Path PP.Rel PP.File) RelPathPrefix
   | AbsDirP (PP.Path PP.Abs PP.Dir)
   | AbsFileP (PP.Path PP.Abs PP.File)
-  deriving (Show, Eq, Lift)
+  deriving (Show, Eq, Lift, Data)
 
 data RelPathPrefix
   = -- | ../, Int saying how many times it repeats.
     ParentDir Int
   | NoPrefix
-  deriving (Show, Eq, Lift)
+  deriving (Show, Eq, Lift, Data)
 
 -- | Describes 'Path' base as absolute.
-data Abs deriving (Lift)
+data Abs deriving (Lift, Data)
 
 -- | Describes 'Path' base as relative to the directory @dir@.
-data Rel dir deriving (Lift)
+data Rel dir deriving (Lift, Data)
 
 -- | Means that path points to a directory @dir@.
 -- To use as a type in place of @dir@, we recommend creating an empty
 -- data type representing the specific directory, e.g. @data ProjectRootDir@.
-data Dir dir deriving (Lift)
+data Dir dir deriving (Lift, Data)
 
 -- | Means that path points to a file @file@.
 -- To use as a type in place of @file@, we recommend creating an empty
 -- data type representing the specific file, e.g. @data ProjectManifestFile@.
-data File file deriving (Lift)
+data File file deriving (Lift, Data)
 
 -- | Describes 'Path' standard as posix (e.g. @\/path\/to\/foobar@).
 -- This makes 'Path' behave in system-independent fashion: code behaves the same
@@ -106,11 +108,11 @@
 -- For example, if you are running your Haskell program on Windows and parsing logs which
 -- were obtained from the Linux server, or maybe you are parsing Javascript import statements,
 -- you will want to use 'Posix'.
-data Posix deriving (Lift)
+data Posix deriving (Lift, Data)
 
 -- | Describes 'Path' standard as windows (e.g. @C:\\path\\to\\foobar@).
 -- Check 'Posix' for more details, everything is analogous.
-data Windows deriving (Lift)
+data Windows deriving (Lift, Data)
 
 -- | Describes 'Path' standard to be determined by the system/OS.
 --
@@ -125,7 +127,7 @@
 -- (where your code is running), for example if user is providing you with the path to the file on the disk
 -- that you will be doing something with.
 -- Keep in mind that 'System' causes the behaviour of 'Path' to be system/platform-dependant.
-data System deriving (Lift) -- Depends on the platform, it is either Posix or Windows.
+data System deriving (Lift, Data) -- Depends on the platform, it is either Posix or Windows.
 
 -- | 'System' is the most commonly used standard, so we provide you with a type alias for it.
 type Path' = Path System
diff --git a/strong-path.cabal b/strong-path.cabal
--- a/strong-path.cabal
+++ b/strong-path.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           strong-path
-version:        1.1.1.0
+version:        1.1.2.0
 synopsis:       Strongly typed paths in Haskell.
 description:    Replacement for a FilePath that enables you to handle filepaths in your code in a type-safe manner. You can specify at type level if they are relative, absolute, file, directory, posix, windows, and even to which file or directory they point to or are relative to.
 category:       System, Filesystem, FilePath
@@ -17,6 +17,8 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
+tested-with:
+    GHC == 8.10.7, GHC == 9.0.1
 extra-source-files:
     README.md
     ChangeLog.md
@@ -43,7 +45,7 @@
       base >=4.7 && <5
     , exceptions ==0.10.*
     , filepath ==1.4.*
-    , path ==0.9.*
+    , path >=0.9.2 && <0.10
     , template-haskell >=2.16 && <2.18
   default-language: Haskell2010
 
@@ -65,7 +67,7 @@
   build-depends:
       base >=4.7 && <5
     , filepath
-    , hspec >=2.7 && <2.9
+    , hspec >=2.7 && <2.10
     , path
     , strong-path
     , tasty ==1.4.*
