diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,7 @@
 Changelog for ghc-make
 
+0.3.1
+    GHC 7.10 compatibility
 0.3
     GHC 7.8 compatibility, following -M output changes (GHC #9287)
     Fix a bug on Windows with shake-0.14 and filepath separators
diff --git a/ghc-make.cabal b/ghc-make.cabal
--- a/ghc-make.cabal
+++ b/ghc-make.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.8
 build-type:         Simple
 name:               ghc-make
-version:            0.3
+version:            0.3.1
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -37,7 +37,7 @@
     hs-source-dirs: src
     build-depends:
         base == 4.*,
-        shake >= 0.13.3,
+        shake >= 0.14,
         unordered-containers >= 0.2.1,
         process >= 1.0
     other-modules:
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -42,20 +42,20 @@
         want [prefix <.> "result"]
 
         -- A file containing the GHC arguments
-        prefix <.> "args" *> \out -> do
+        prefix <.> "args" %> \out -> do
             alwaysRerun
             writeFileChanged out $ unlines argsGHC
         needArgs <- return $ do need [prefix <.> "args"]; return argsGHC
 
         -- A file containing the ghc-pkg list output
-        prefix <.> "pkgs" *> \out -> do
+        prefix <.> "pkgs" %> \out -> do
             alwaysRerun
             (Stdout s, Stderr _) <- cmd "ghc-pkg list --verbose"
             writeFileChanged out s
         needPkgs <- return $ need [prefix <.> "pkgs"]
 
         -- A file containing the output of -M
-        prefix <.> "makefile" *> \out -> do
+        prefix <.> "makefile" %> \out -> do
             args <- needArgs
             needPkgs
             -- Use the default o/hi settings so we can parse the makefile properly
@@ -69,7 +69,7 @@
 
         -- The result, we can't want the object directly since it is painful to
         -- define a build rule for it because its name depends on both args and makefile
-        prefix <.> "result" *> \out -> do
+        prefix <.> "result" %> \out -> do
             args <- needArgs
             mk <- needMk
             let output = if "-no-link" `elem` argsGHC then Nothing
