diff --git a/BuildBox/Command/File.hs b/BuildBox/Command/File.hs
--- a/BuildBox/Command/File.hs
+++ b/BuildBox/Command/File.hs
@@ -6,7 +6,8 @@
 	, inScratchDir
 	, clobberDir
 	, ensureDir
-	, withTempFile)
+	, withTempFile
+	, atomicWriteFile)
 where
 import BuildBox.Build
 import BuildBox.Command.System
@@ -136,6 +137,10 @@
 	io $ canonicalizePath fileName
 
 
-
-
-
+-- | Atomically write a file by first writing it to a tmp file then renaming it.
+--   This prevents concurrent processes from reading half-written files.
+atomicWriteFile :: FilePath -> String -> Build ()
+atomicWriteFile filePath str
+ = do	tmp	<- newTempFile
+	io $ writeFile tmp str
+	ssystem $ "mv " ++ tmp ++ " " ++ filePath
diff --git a/BuildBox/IO/File.hs b/BuildBox/IO/File.hs
deleted file mode 100644
--- a/BuildBox/IO/File.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS_HADDOCK hide #-}
-module BuildBox.IO.File
-	(atomicWriteFile)
-where
-
--- | Should atomically write a file by writing it to a tmp file then renaming it.
---   TODO: Does not yet work as advertised.
-atomicWriteFile :: FilePath -> String -> IO ()
-atomicWriteFile filePath str
- = do	writeFile filePath str
diff --git a/buildbox.cabal b/buildbox.cabal
--- a/buildbox.cabal
+++ b/buildbox.cabal
@@ -1,5 +1,5 @@
 Name:                buildbox
-Version:             1.5.0.1
+Version:             1.5.1.1
 License:             BSD3
 License-file:        LICENSE
 Author:              Ben Lippmeier
@@ -76,4 +76,3 @@
         BuildBox.Build.Base
         BuildBox.Aspect.Aspect
         BuildBox.Benchmark.Benchmark
-        BuildBox.IO.File
