diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog for shake-language-c
 
+## v0.11.0
+
+* Support shake 0.16
+
 ## v0.10.1
 
 * Add support for Linux ARMv7
diff --git a/shake-language-c.cabal b/shake-language-c.cabal
--- a/shake-language-c.cabal
+++ b/shake-language-c.cabal
@@ -13,14 +13,14 @@
 -- limitations under the License.
 
 Name:         shake-language-c
-Version:      0.10.1
+Version:      0.11.0
 Synopsis:     Utilities for cross-compiling with Shake
 Description:  This library provides <http://hackage.haskell.org/package/shake Shake> utilities for cross-compiling @C@, @C++@ and @ObjC@ code for various target platforms. Currently supported target platforms are Android, iOS, Linux, MacOS X, Windows\/MinGW and Google Portable Native Client (PNaCl). Supported host platforms are MacOS X, Linux and Windows.
 Category:     Development
 License:      Apache-2.0
 License-File: LICENSE
 
-Copyright:    Copyright (c) 2012-2016 Samplecount S.L.
+Copyright:    Copyright (c) 2012 Samplecount S.L.
 Homepage:     https://github.com/samplecount/shake-language-c
 Bug-Reports:  https://github.com/samplecount/shake-language-c/issues
 Maintainer:   stefan@samplecount.com
@@ -61,7 +61,7 @@
     , data-default-class
     , fclabels >= 2
     , process
-    , shake >= 0.14
+    , shake >= 0.16
     , split
     , unordered-containers
 
@@ -70,14 +70,14 @@
   hs-source-dirs: tests
   main-is:        doctests.hs
   ghc-options:    -threaded
-  build-depends:  base, doctest >= 0.8, shake >= 0.10, shake-language-c
+  build-depends:  base, doctest >= 0.8, shake, shake-language-c
 
 test-suite spectests
   type:           exitcode-stdio-1.0
   hs-source-dirs: tests
   main-is:        spectests.hs
   ghc-options:    -threaded
-  build-depends:  base, directory, hspec, shake >= 0.10, shake-language-c
+  build-depends:  base, directory, hspec, shake, shake-language-c
 
 Source-Repository head
   Type:     git
diff --git a/src/Development/Shake/Language/C/BuildFlags.hs b/src/Development/Shake/Language/C/BuildFlags.hs
--- a/src/Development/Shake/Language/C/BuildFlags.hs
+++ b/src/Development/Shake/Language/C/BuildFlags.hs
@@ -54,7 +54,6 @@
 import           Control.Monad
 import           Data.Char (isSpace)
 import           Data.Default.Class (Default(..))
-import           Data.Monoid
 import           Data.List
 import           Data.List.Split
 import           Data.Maybe
diff --git a/src/Development/Shake/Language/C/Config.hs b/src/Development/Shake/Language/C/Config.hs
--- a/src/Development/Shake/Language/C/Config.hs
+++ b/src/Development/Shake/Language/C/Config.hs
@@ -1,4 +1,6 @@
-{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE TypeFamilies #-}
 
 {-|
 Description: Read values from configuration files
@@ -13,7 +15,6 @@
   , getPaths
 ) where
 
-import Control.Applicative
 import qualified Data.HashMap.Strict as Map
 import Development.Shake
 import Development.Shake.Classes
@@ -21,6 +22,8 @@
 import Development.Shake.Language.C.Util (words')
 
 newtype Config = Config ([FilePath], FilePath, [(String, String)], String) deriving (Show,Typeable,Eq,Hashable,Binary,NFData)
+
+type instance RuleResult Config = Maybe String
 
 {- | Given a list of dependencies, return a function that takes an environment
 of variable bindings, a configuration file path and a configuration variable
diff --git a/src/Development/Shake/Language/C/Host/OSX.hs b/src/Development/Shake/Language/C/Host/OSX.hs
--- a/src/Development/Shake/Language/C/Host/OSX.hs
+++ b/src/Development/Shake/Language/C/Host/OSX.hs
@@ -16,7 +16,6 @@
   getHostToolChain
 ) where
 
-import Control.Applicative
 import Development.Shake
 import Development.Shake.Language.C.Target
 import Development.Shake.Language.C.Target.OSX
diff --git a/src/Development/Shake/Language/C/Host/Windows.hs b/src/Development/Shake/Language/C/Host/Windows.hs
--- a/src/Development/Shake/Language/C/Host/Windows.hs
+++ b/src/Development/Shake/Language/C/Host/Windows.hs
@@ -18,11 +18,9 @@
 
 import           Data.Char (isSpace, toLower)
 import           Development.Shake
-import           Development.Shake.Command
 import           Development.Shake.Language.C.Target
 import           Development.Shake.Language.C.Target.Windows
 import           Development.Shake.Language.C.ToolChain
-import qualified System.Info as System
 
 trim :: String -> String
 trim = reverse . dropWhile isSpace . reverse
diff --git a/src/Development/Shake/Language/C/PkgConfig.hs b/src/Development/Shake/Language/C/PkgConfig.hs
--- a/src/Development/Shake/Language/C/PkgConfig.hs
+++ b/src/Development/Shake/Language/C/PkgConfig.hs
@@ -26,7 +26,6 @@
   , fromConfig
 ) where
 
-import Control.Applicative
 import Data.Char (toLower)
 import Data.Default.Class (Default(..))
 import Data.List (intercalate, isPrefixOf)
diff --git a/src/Development/Shake/Language/C/Target/OSX.hs b/src/Development/Shake/Language/C/Target/OSX.hs
--- a/src/Development/Shake/Language/C/Target/OSX.hs
+++ b/src/Development/Shake/Language/C/Target/OSX.hs
@@ -38,7 +38,6 @@
   , universalBinary
 ) where
 
-import           Control.Applicative
 import           Data.List (stripPrefix)
 import           Data.List.Split (splitOn)
 import           Data.Maybe
