diff --git a/hakyll.cabal b/hakyll.cabal
--- a/hakyll.cabal
+++ b/hakyll.cabal
@@ -1,5 +1,5 @@
 Name:               hakyll
-Version:            3.0.0.4
+Version:            3.0.1.0
 
 Synopsis:           A simple static site generator library.
 Description:        A simple static site generator library, mainly aimed at
@@ -89,10 +89,11 @@
                       Hakyll.Core.ResourceProvider
                       Hakyll.Core.CompiledItem
                       Hakyll.Core.Compiler
-                      Hakyll.Core.CopyFile
                       Hakyll.Core.Run
                       Hakyll.Core.Store
                       Hakyll.Core.Writable
+                      Hakyll.Core.Writable.CopyFile
+                      Hakyll.Core.Writable.WritableTuple
                       Hakyll.Core.Identifier
                       Hakyll.Core.DirectedGraph.Dot
                       Hakyll.Core.DirectedGraph.DependencySolver
diff --git a/src/Hakyll.hs b/src/Hakyll.hs
--- a/src/Hakyll.hs
+++ b/src/Hakyll.hs
@@ -2,7 +2,6 @@
 --
 module Hakyll
     ( module Hakyll.Core.Compiler
-    , module Hakyll.Core.CopyFile
     , module Hakyll.Core.Configuration
     , module Hakyll.Core.Identifier
     , module Hakyll.Core.Identifier.Pattern
@@ -14,6 +13,8 @@
     , module Hakyll.Core.Util.File
     , module Hakyll.Core.Util.String
     , module Hakyll.Core.Writable
+    , module Hakyll.Core.Writable.CopyFile
+    , module Hakyll.Core.Writable.WritableTuple
     , module Hakyll.Main
     , module Hakyll.Web.CompressCss
     , module Hakyll.Web.Feed
@@ -29,7 +30,6 @@
     ) where
 
 import Hakyll.Core.Compiler
-import Hakyll.Core.CopyFile
 import Hakyll.Core.Configuration
 import Hakyll.Core.Identifier
 import Hakyll.Core.Identifier.Pattern
@@ -41,6 +41,8 @@
 import Hakyll.Core.Util.File
 import Hakyll.Core.Util.String
 import Hakyll.Core.Writable
+import Hakyll.Core.Writable.CopyFile
+import Hakyll.Core.Writable.WritableTuple
 import Hakyll.Main
 import Hakyll.Web.CompressCss
 import Hakyll.Web.Feed
diff --git a/src/Hakyll/Core/CompiledItem.hs b/src/Hakyll/Core/CompiledItem.hs
--- a/src/Hakyll/Core/CompiledItem.hs
+++ b/src/Hakyll/Core/CompiledItem.hs
@@ -15,7 +15,7 @@
     ) where
 
 import Data.Binary (Binary)
-import Data.Typeable (Typeable, cast)
+import Data.Typeable (Typeable, cast, typeOf)
 import Data.Maybe (fromMaybe)
 
 import Hakyll.Core.Writable
@@ -42,4 +42,5 @@
                -> a
 unCompiledItem (CompiledItem x) = fromMaybe error' $ cast x
   where
-    error' = error "Hakyll.Core.CompiledItem.unCompiledItem: Unsupported type"
+    error' = error $  "Hakyll.Core.CompiledItem.unCompiledItem: "
+                   ++ "unsupported type (got " ++ show (typeOf x) ++ ")"
diff --git a/src/Hakyll/Core/CopyFile.hs b/src/Hakyll/Core/CopyFile.hs
deleted file mode 100644
--- a/src/Hakyll/Core/CopyFile.hs
+++ /dev/null
@@ -1,29 +0,0 @@
--- | Exports simple compilers to just copy files
---
-{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable #-}
-module Hakyll.Core.CopyFile
-    ( CopyFile (..)
-    , copyFileCompiler
-    ) where
-
-import Control.Arrow ((>>^))
-import System.Directory (copyFile)
-
-import Data.Typeable (Typeable)
-import Data.Binary (Binary)
-
-import Hakyll.Core.ResourceProvider
-import Hakyll.Core.Writable
-import Hakyll.Core.Compiler
-import Hakyll.Core.Identifier
-
--- | Newtype construct around 'FilePath' which will copy the file directly
---
-newtype CopyFile = CopyFile {unCopyFile :: FilePath}
-                 deriving (Show, Eq, Ord, Binary, Typeable)
-
-instance Writable CopyFile where
-    write dst (CopyFile src) = copyFile src dst
-
-copyFileCompiler :: Compiler Resource CopyFile
-copyFileCompiler = getIdentifier >>^ CopyFile . toFilePath
diff --git a/src/Hakyll/Core/Writable/CopyFile.hs b/src/Hakyll/Core/Writable/CopyFile.hs
new file mode 100644
--- /dev/null
+++ b/src/Hakyll/Core/Writable/CopyFile.hs
@@ -0,0 +1,29 @@
+-- | Exports simple compilers to just copy files
+--
+{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable #-}
+module Hakyll.Core.Writable.CopyFile
+    ( CopyFile (..)
+    , copyFileCompiler
+    ) where
+
+import Control.Arrow ((>>^))
+import System.Directory (copyFile)
+
+import Data.Typeable (Typeable)
+import Data.Binary (Binary)
+
+import Hakyll.Core.ResourceProvider
+import Hakyll.Core.Writable
+import Hakyll.Core.Compiler
+import Hakyll.Core.Identifier
+
+-- | Newtype construct around 'FilePath' which will copy the file directly
+--
+newtype CopyFile = CopyFile {unCopyFile :: FilePath}
+                 deriving (Show, Eq, Ord, Binary, Typeable)
+
+instance Writable CopyFile where
+    write dst (CopyFile src) = copyFile src dst
+
+copyFileCompiler :: Compiler Resource CopyFile
+copyFileCompiler = getIdentifier >>^ CopyFile . toFilePath
diff --git a/src/Hakyll/Core/Writable/WritableTuple.hs b/src/Hakyll/Core/Writable/WritableTuple.hs
new file mode 100644
--- /dev/null
+++ b/src/Hakyll/Core/Writable/WritableTuple.hs
@@ -0,0 +1,37 @@
+-- | This module exposes a writable type 'WritableTuple' which is a simple
+-- newtype wrapper around a tuple.
+--
+-- The idea is that, given a tuple @(a, b)@, @a@ is the value you actually want
+-- to save to the disk, and @b@ is some additional info that you /don't/ want to
+-- save, but that you need later, for example in a 'require' clause.
+--
+{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable #-}
+module Hakyll.Core.Writable.WritableTuple
+    ( WritableTuple (..)
+    , writableTupleFst
+    , writableTupleSnd
+    , writableTupleCompiler
+    ) where
+
+import Control.Arrow (arr)
+
+import Data.Typeable (Typeable)
+import Data.Binary (Binary)
+
+import Hakyll.Core.Writable
+import Hakyll.Core.Compiler
+
+newtype WritableTuple a b = WritableTuple {unWritableTuple :: (a, b)}
+                          deriving (Show, Eq, Ord, Binary, Typeable)
+
+instance Writable a => Writable (WritableTuple a b) where
+    write dst (WritableTuple (x, _)) = write dst x
+
+writableTupleFst :: WritableTuple a b -> a
+writableTupleFst = fst . unWritableTuple
+
+writableTupleSnd :: WritableTuple a b -> b
+writableTupleSnd = snd . unWritableTuple
+
+writableTupleCompiler :: Compiler (a, b) (WritableTuple a b)
+writableTupleCompiler = arr WritableTuple
