diff --git a/src/Zifter.hs b/src/Zifter.hs
--- a/src/Zifter.hs
+++ b/src/Zifter.hs
@@ -50,21 +50,21 @@
 
 import Control.Concurrent.Async (async, wait)
 import Control.Concurrent.STM
-       (newTChanIO, tryReadTChan, readTChan, writeTChan, atomically,
-        orElse, takeTMVar, putTMVar, newEmptyTMVar)
+       (atomically, newEmptyTMVar, newTChanIO, orElse, putTMVar,
+        readTChan, takeTMVar, tryReadTChan, writeTChan)
 import Control.Monad
 import Path
 import Path.IO
 import Safe
 import System.Console.ANSI
 import qualified System.Directory as D
-       (canonicalizePath, setPermissions, getPermissions,
-        setOwnerExecutable)
+       (canonicalizePath, getPermissions, setOwnerExecutable,
+        setPermissions)
 import System.Environment (getProgName)
 import System.Exit
-import qualified System.FilePath as FP (splitPath, joinPath)
+import qualified System.FilePath as FP (joinPath, splitPath)
 import System.IO
-       (hSetBuffering, BufferMode(NoBuffering), stderr, stdout, hFlush)
+       (BufferMode(NoBuffering), hFlush, hSetBuffering, stderr, stdout)
 
 import Zifter.OptParse
 import Zifter.Recurse
diff --git a/src/Zifter/Zift/Types.hs b/src/Zifter/Zift/Types.hs
--- a/src/Zifter/Zift/Types.hs
+++ b/src/Zifter/Zift/Types.hs
@@ -1,12 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveGeneric #-}
 
 module Zifter.Zift.Types where
 
 import Prelude
 
-import Control.Concurrent.Async (waitEither, wait, cancel, async)
-import Control.Concurrent.STM (TChan, writeTChan, atomically)
-import Control.Exception (SomeException, displayException, catch)
+import Control.Concurrent.Async (async, cancel, wait, waitEither)
+import Control.Concurrent.STM (TChan, atomically, writeTChan)
+import Control.Exception (SomeException, catch, displayException)
 import Control.Monad.Catch (MonadThrow(..))
 import Control.Monad.Fail as Fail
 import Control.Monad.IO.Class
@@ -39,7 +40,9 @@
 
 instance Validity ZiftContext where
     isValid = isValid . rootdir
-
+#if MIN_VERSION_validity(0,4,0)
+    validate zc = rootdir zc <?!> "rootdir"
+#endif
 newtype ZiftState = ZiftState
     { bufferedOutput :: [ZiftOutput] -- In reverse order
     } deriving (Show, Eq, Generic)
diff --git a/zifter.cabal b/zifter.cabal
--- a/zifter.cabal
+++ b/zifter.cabal
@@ -1,5 +1,5 @@
 name: zifter
-version: 0.0.1.2
+version: 0.0.1.3
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -28,6 +28,7 @@
         Zifter.Zift.Types
     build-depends:
         base >=4.9 && <=5,
+        ansi-terminal >=0.6 && <0.7,
         async >=2.1 && <2.2,
         directory >=1.2 && <1.4,
         exceptions >=0.8 && <0.9,
@@ -37,10 +38,9 @@
         path-io >1.2 && <1.3,
         process >=1.4 && <1.6,
         safe >=0.3 && <0.4,
-        validity >=0.3 && <0.4,
         stm >=2.4 && <2.5,
-        ansi-terminal >=0.6 && <0.7,
-        validity-path >=0.1 && <0.2
+        validity >=0.3 && <0.5,
+        validity-path >=0.1 && <0.3
     default-language: Haskell2010
     hs-source-dirs: src/
     ghc-options: -Wall
@@ -52,9 +52,9 @@
         base >=4.9 && <=5,
         zifter -any,
         QuickCheck >=2.9 && <2.10,
-        genvalidity >=0.3 && <0.4,
-        genvalidity-hspec >=0.3 && <0.4,
-        genvalidity-path >=0.1 && <0.2,
+        genvalidity >=0.3 && <0.5,
+        genvalidity-hspec >=0.3 && <0.6,
+        genvalidity-path >=0.1 && <0.3,
         hspec -any,
         path -any,
         path-io -any,
