diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,14 +1,14 @@
 # Changelog for within
 
-## v0.1.1.0
+## v0.2.0.0
 
-Readd missing instances.
+* Add [path-like](https://hackage.haskell.org/package/path-like) and `PathLike` instance.
 
 ## v0.1.0.0
 
-Change approach to `ComonadEnv` style newtype. `Within` can now store an arbitrary
-inner type whilst maintaining the convenience functions in the special case where
-the inner type is a `Path`.
+* Change approach to `ComonadEnv` style newtype. `Within` can now store an arbitrary
+  inner type whilst maintaining the convenience functions in the special case where
+  the inner type is a `Path`.
 
 ## v0.0.2.0
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Author name here (c) 2020
+Copyright Daniel Firth (c) 2020
 
 All rights reserved.
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/src/Within.hs b/src/Within.hs
--- a/src/Within.hs
+++ b/src/Within.hs
@@ -1,9 +1,18 @@
-{-# LANGUAGE DeriveFoldable        #-}
-{-# LANGUAGE DeriveFunctor         #-}
 {-# LANGUAGE DeriveGeneric         #-}
 {-# LANGUAGE DeriveTraversable     #-}
+{-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances  #-}
+{- |
+   Module     : Path.Like
+   Copyright  : Copyright (C) 2020 Daniel Firth
+   Maintainer : Daniel Firth <dan.firth@homotopic.tech>
+   License    : MIT
+   Stability  : experimental
+
+The Within type, an EnvT comonad specialised to `Path b Dir`.
+-}
 module Within (
   WithinT(..)
 , Within
@@ -28,6 +37,7 @@
 import           Data.Typeable
 import           GHC.Generics
 import           Path
+import           Path.Like
 
 -- | The Within Type, newtype wrapper around `EnvT` specialised to a `Path b Dir` environment.
 newtype WithinT b w a = WithinT (EnvT (Path b Dir) w a)
@@ -67,9 +77,15 @@
 within :: a -> Path b Dir -> Within b a
 within x y = WithinT (EnvT y (Identity x))
 
--- | Turns a `Within` containing a path into a single path.
-fromWithin :: Within a (Path Rel t) -> Path a t
-fromWithin = liftA2 (</>) ask extract
+-- | Turns a `Within` containing a `PathLike` into a single `Path`.
+fromWithin :: PathLike Rel t a => Within b a -> Path b t
+fromWithin = liftA2 (</>) ask (toPath . extract)
+
+instance PathLike Rel t a => PathLike b t (Within b a) where
+  toPath = fromWithin
+
+instance FileLike Rel a => FileLike b (Within b a)
+instance DirLike Rel a => DirLike b (Within b a)
 
 instance Eq t => Eq (Within b t) where
   WithinT (EnvT e (Identity a)) == WithinT (EnvT e' (Identity a')) = e == e' && a == a'
diff --git a/within.cabal b/within.cabal
--- a/within.cabal
+++ b/within.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c01a2f87b3dc8101e86b077b7ced2de7735d4ec13ec92d36ee17a60798fde570
+-- hash: 8717fa1b57121b98ec2dc642105acd188f8ca914cbebaf65a0cf02877a3529ee
 
 name:           within
-version:        0.1.1.0
+version:        0.2.0.0
 synopsis:       A value within another path.
 description:    Simple newtype for representing a value within a well-typed directory. Useful for when you need to jump between directories and change filenames independently. Uses the path library.
 category:       Filesystem
@@ -21,6 +21,10 @@
     README.md
     ChangeLog.md
 
+source-repository head
+  type: git
+  location: https://gitlab.com/homotopic-tech/within
+
 library
   exposed-modules:
       Within
@@ -36,4 +40,5 @@
     , free
     , hashable
     , path
+    , path-like >=0.2.0.0
   default-language: Haskell2010
