diff --git a/lib/CheckDir.hs b/lib/CheckDir.hs
index 46540516df0281fb69c8d1823d96b56dde157d5b..68bcefe4b31be300d41c6b80a565b4ab31a52a23 100644
--- a/lib/CheckDir.hs
+++ b/lib/CheckDir.hs
@@ -6,17 +6,17 @@
 {-# LANGUAGE TupleSections     #-}
 
 -- | Module that contains high-level checking for an entire directory
-module CheckDir (recursiveCheckDir, writeAdjustedRepository)  where
+module CheckDir (recursiveCheckDir, DirResult(..))  where
 
-import           CheckMap               (MapResult (mapresultAdjusted, mapresultProvides),
+import           CheckMap               (MapResult (mapresultProvides),
                                          loadAndLintMap, mapresultDepends)
 import           Control.Monad          (void)
 import           Control.Monad.Extra    (mapMaybeM)
-import           Data.Aeson             (ToJSON, encodeFile, (.=))
+import           Data.Aeson             (ToJSON, (.=))
 import qualified Data.Aeson             as A
 import           Data.Foldable          (fold)
 import           Data.Functor           ((<&>))
-import           Data.Map               (Map, toList)
+import           Data.Map               (Map)
 import qualified Data.Map               as M
 import           Data.Map.Strict        (mapKeys, (\\))
 import           Data.Maybe             (mapMaybe)
@@ -206,8 +206,3 @@ recursiveCheckDir' prefix paths done acc = do
 
 
 
-writeAdjustedRepository :: FilePath -> DirResult -> IO ()
-writeAdjustedRepository outPath result =
-  mapM_
-    (\(path,out) -> encodeFile (outPath </> path) $ mapresultAdjusted out)
-    (toList $ dirresultMaps result)
diff --git a/lib/CheckMap.hs b/lib/CheckMap.hs
index 41f251e020d787f146bd70ca3b733457070120ab..1b428541107c81fd00fad2c8b53db6397772e198 100644
--- a/lib/CheckMap.hs
+++ b/lib/CheckMap.hs
@@ -11,6 +11,7 @@ module CheckMap (loadAndLintMap, MapResult(..)) where
 import           Data.Aeson       (ToJSON (toJSON))
 import qualified Data.Aeson       as A
 import           Data.Aeson.Types ((.=))
+import           Data.Functor     ((<&>))
 import           Data.Map         (Map, toList)
 import qualified Data.Map         as M
 import           Data.Maybe       (mapMaybe)
@@ -20,7 +21,6 @@ import qualified Data.Vector      as V
 import           GHC.Generics     (Generic)
 
 
-import           Data.Functor     ((<&>))
 import           LintWriter       (filterLintLevel, invertLintResult, lintToDep,
                                    resultToAdjusted, resultToDeps,
                                    resultToLints, resultToOffers, runLintWriter)
diff --git a/lib/WriteRepo.hs b/lib/WriteRepo.hs
new file mode 100644
index 0000000000000000000000000000000000000000..5e695f593f7ce0d1edd862485fff235d68a8452a
--- /dev/null
+++ b/lib/WriteRepo.hs
@@ -0,0 +1,28 @@
+
+
+
+-- | Module for writing an already linted map Repository back out again.
+
+module WriteRepo where
+
+import           CheckDir               (DirResult (dirresultMaps))
+import           CheckMap               (MapResult (mapresultAdjusted))
+import           Data.Aeson             (encodeFile)
+import           Data.Map.Strict        (toList)
+import           System.Directory.Extra (createDirectoryIfMissing)
+import           System.FilePath.Posix  ((</>))
+
+
+
+writeAdjustedRepository :: FilePath -> DirResult -> IO ()
+writeAdjustedRepository outPath result = do
+
+  -- True here just means the equivalent of mkdir -p
+  createDirectoryIfMissing True outPath
+
+  -- write out all maps
+  mapM_
+    (\(path,out) -> encodeFile (outPath </> path) $ mapresultAdjusted out)
+    (toList $ dirresultMaps result)
+
+  -- TODO: copy all assets
diff --git a/src/Main.hs b/src/Main.hs
index 0e80eabf6b607292174caca5bfc4772bfeb71178..8cbfe7dc2259e2c03e0ddc299f3dd0049bbfecc8 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -13,8 +13,8 @@ import qualified Data.ByteString.Lazy     as LB
 import           Data.Maybe               (fromMaybe)
 import           WithCli
 
-import           CheckDir                 (recursiveCheckDir,
-                                           writeAdjustedRepository)
+import           CheckDir                 (recursiveCheckDir)
+import WriteRepo (writeAdjustedRepository)
 import           Types                    (Level (..))
 import           Util                     (printPretty)
 
diff --git a/walint.cabal b/walint.cabal
index fcb631b132837e002ed6c14548d77af08cff675f..069d8f3e40a34d50a48603c80b22ea3b912fee7f 100644
--- a/walint.cabal
+++ b/walint.cabal
@@ -27,6 +27,7 @@ library
     hs-source-dirs: lib
     exposed-modules:
         CheckMap
+        WriteRepo
         CheckDir
         LintWriter
         Properties