diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Revision history for iridium
 
+## 0.1.5.6  -- 2016-09-28
+
+  * Only internal changes (support ghc-8, fix support for ghc-7.8;
+    adapt/switch to turtle-1.3.0)
+
 ## 0.1.5.5  -- 2016-09-28
 
   * Slight improvements around the handling of testing against multiple
diff --git a/iridium.cabal b/iridium.cabal
--- a/iridium.cabal
+++ b/iridium.cabal
@@ -1,6 +1,6 @@
 name:                iridium
-version:             0.1.5.5
-synopsis:            Automated Local Testing and Package Uploading
+version:             0.1.5.6
+synopsis:            Automated Local Cabal Package Testing and Uploading
 license:             BSD3
 license-file:        LICENSE
 author:              Lennart Spitzner
@@ -25,6 +25,8 @@
   * Checking that the upper bounds of dependencies
     are up-to-date by making use of stackage snapshots.
   .
+  * [git] Pushing and tagging the version to the commit.
+  .
   * Uploading of both the package itself and the documentation.
   .
   The program is configurable using a per-project .yaml file.
@@ -69,13 +71,13 @@
   -- other-modules:
   -- other-extensions:
   build-depends:
-    { base                   >=4.7      && <4.9
+    { base                   >=4.7      && <4.10
     , lifted-base            >=0.2.3.6  && <0.3
     , yaml                   >=0.8.16   && <0.9
-    , turtle                 >=1.2.5    && <1.3
+    , turtle                 >=1.3.0    && <1.4
     , text                   >=1.2.2.0  && <1.3
     , containers             >=0.5.5.1  && <0.6
-    , transformers           >=0.3.0.0  && <0.5
+    , transformers           >=0.3.0.0  && <0.6
     , system-filepath        >=0.4.13.4 && <0.5
     , unordered-containers   >=0.2.5.1  && <0.3
     , multistate             >=0.7.0.0  && <0.8
@@ -86,7 +88,7 @@
     , bytestring             >=0.10.4.0 && <0.11
     , tagged                 >=0.8.3    && <0.9
     , extra                  >=1.4.3    && <1.5
-    , process                >=1.2.0.0  && < 1.5
+    , process                >=1.2.3.0  && <1.5
     , vector                 >=0.11.0.0 && <0.12
     , ansi-terminal          >=0.6.2.3  && <0.7
     , transformers-base      >=0.4.4    && <0.5
@@ -119,9 +121,9 @@
   }
   build-depends:
     { iridium
-    , base                   >=4.7      && <4.9
+    , base                   >=4.7      && <4.10
     , yaml                   >=0.8.16   && <0.9
-    , transformers           >=0.3.0.0  && <0.5
+    , transformers           >=0.3.0.0  && <0.6
     , unordered-containers   >=0.2.5.1  && <0.3
     , multistate             >=0.7.0.0  && <0.8
     , extra                  >=1.4.3    && <1.5
diff --git a/src/Development/Iridium.hs b/src/Development/Iridium.hs
--- a/src/Development/Iridium.hs
+++ b/src/Development/Iridium.hs
@@ -92,7 +92,7 @@
           pushLog LogLevelError "Error: Found more than one cabal package file!"
           mzero
     pushLog LogLevelInfo $ "Reading cabal package description " ++ encodeString packageFile
-    content <- Text.unlines `liftM` Turtle.fold (Turtle.input packageFile) Foldl.list
+    content <- Turtle.linesToText `liftM` Turtle.fold (Turtle.input packageFile) Foldl.list
     -- pushLog LogLevelDebug $ Text.unpack content
     let parseResult = parsePackageDescription $ Text.unpack content
     case parseResult of
@@ -130,7 +130,6 @@
 runChecks
   :: ( MonadIO m0
      , MonadPlus m0
-     , MonadBaseControl IO m0
      , ContainsType LogState s
      , ContainsType CheckState s
      , ContainsType Config r
@@ -155,7 +154,6 @@
 
 displaySummary
   :: ( MonadIO m
-     , MonadPlus m
      , MonadMultiState LogState m
      , MonadMultiState CheckState m
      , MonadMultiReader Config m
@@ -199,7 +197,6 @@
 askGlobalConfirmation
   :: ( MonadIO m
      , MonadPlus m
-     , MonadMultiReader Config m
      )
   => Bool
   -> m ()
diff --git a/src/Development/Iridium/Checks.hs b/src/Development/Iridium/Checks.hs
--- a/src/Development/Iridium/Checks.hs
+++ b/src/Development/Iridium/Checks.hs
@@ -124,7 +124,7 @@
       changelogContentLines <- Turtle.fold (Turtle.input path) Foldl.list
       currentVersionStr <- liftM showVersion askPackageVersion
       if any (Text.pack currentVersionStr `Text.isInfixOf`)
-             changelogContentLines
+             (Turtle.lineToText `fmap` changelogContentLines)
         then return True
         else do
           pushLog LogLevelError $ "changelog does not contain " ++ currentVersionStr
@@ -134,7 +134,6 @@
   :: ( MonadIO m
      , MonadMultiState LogState m
      , MonadMultiState CheckState m
-     , MonadMultiReader Config m
      , MonadMultiReader Infos m
      )
   => m ()
@@ -167,7 +166,6 @@
   :: ( MonadIO m
      , MonadMultiState LogState m
      , MonadMultiState CheckState m
-     , MonadMultiReader Config m
      , MonadMultiReader Infos m
      )
   => m ()
@@ -382,7 +380,6 @@
   :: forall m
    . ( MonadIO m
      , MonadPlus m
-     , MonadBaseControl IO m
      , MonadMultiState LogState m
      , MonadMultiState CheckState m
      , MonadMultiReader Infos m
@@ -457,9 +454,7 @@
   fetchCabalConfig
     :: forall m0
      . ( MonadIO m0
-       , MonadPlus m0
        , MonadMultiState LogState m0
-       , MonadMultiReader Infos m0
        )
     => String
     -> m0 ByteString
diff --git a/src/Development/Iridium/Config.hs b/src/Development/Iridium/Config.hs
--- a/src/Development/Iridium/Config.hs
+++ b/src/Development/Iridium/Config.hs
@@ -135,10 +135,12 @@
       = error "Null"
 
 determineConfFromStuff
-  :: ( MonadIO m
-     , MonadMultiState LogState m
-     )
-  => m Config
+  :: -- ( MonadIO m
+     -- , MonadMultiState LogState m
+     -- )
+     Monad m
+  => 
+     m Config
 determineConfFromStuff = do
   return $ Yaml.Object $ HM.empty -- TODO
 
diff --git a/src/Development/Iridium/ExternalProgWrappers.hs b/src/Development/Iridium/ExternalProgWrappers.hs
--- a/src/Development/Iridium/ExternalProgWrappers.hs
+++ b/src/Development/Iridium/ExternalProgWrappers.hs
@@ -8,7 +8,6 @@
   , runCommandStdOut
   , observeCreateProcessWithExitCode
   , getExternalProgramVersion
-  , readShellProcessWithExitCode
   , runCommandSuccessCabal
   , runCommandSuccessHLint
   )
@@ -51,11 +50,9 @@
 import qualified System.Process as Process
 import qualified Data.Char as Char
 import           Text.Read ( readMaybe )
+import           Data.Text ( Text )
 
--- well, no Turtle, apparently.
--- no way to retrieve stdout, stderr and exitcode.
--- the most generic case, not supported? psshhh.
-import           System.Process hiding ( cwd )
+-- import           System.Process hiding ( cwd )
 
 import           Data.Maybe ( maybeToList )
 
@@ -70,14 +67,14 @@
 
 
 
-readShellProcessWithExitCode
-  :: String
-  -> [String]
-  -> IO (ExitCode, String, String)
-readShellProcessWithExitCode c ps =
-  readCreateProcessWithExitCode
-    (shell $ c ++ " " ++ intercalate " " (fmap show ps))
-    ""
+-- readShellProcessWithExitCode
+--   :: String
+--   -> [String]
+--   -> IO (ExitCode, String, String)
+-- readShellProcessWithExitCode c ps =
+--   readCreateProcessWithExitCode
+--     (shell $ c ++ " " ++ intercalate " " (fmap show ps))
+--     ""
 
 runCommandSuccess
   :: ( MonadIO m
@@ -107,10 +104,11 @@
             replaceStackTop l
 
       liftIO $ observeCreateProcessWithExitCode
-        (shell $ c ++ " " ++ intercalate " " (fmap show ps))
+        (Process.shell $ c ++ " " ++ intercalate " " (fmap show ps))
         ""
         handleLine
         handleLine
+
     
     case exitCode of
       ExitSuccess -> do
@@ -150,48 +148,53 @@
   runCommandSuccess hlintInvoc ps
 
 runCommandStdOut
-  :: ( MonadIO m
-     , MonadPlus m
-     , MonadMultiState LogState m
-     )
+  :: (MonadIO m, MonadPlus m, MonadMultiState LogState m)
   => String
   -> [String]
   -> m String
 runCommandStdOut c ps = do
   let infoStr = c ++ " " ++ intercalate " " ps
-  (exitCode, stdOut, _stdErr) <- liftIO $
-    readShellProcessWithExitCode c ps
+  (exitCode, stdOut, _stdErr) <- liftIO $ Turtle.procStrictWithErr
+    (Text.pack c)
+    (Text.pack `fmap` ps)
+    Control.Applicative.empty
   case exitCode of
     ExitFailure _ -> do
       pushLog LogLevelError $ "Error running command `" ++ infoStr ++ "`."
       mzero
-    ExitSuccess -> do
-      return stdOut
+    ExitSuccess   -> do
+      return (Text.unpack stdOut)
 
 getExternalProgramVersion
-  :: ( MonadIO m
-     , MonadPlus m
-     , MonadMultiState LogState m
-     )
-  => String
-  -> m [Int]
+  :: (MonadIO m, MonadPlus m, MonadMultiState LogState m) => String -> m [Int]
 getExternalProgramVersion prog = do
   let err = do
-        pushLog LogLevelError $ "Could not determine version of external program " ++ prog
+        pushLog LogLevelError
+          $  "Could not determine version of external program "
+          ++ prog
         mzero
-  (exitCode, stdOut, _stdErr) <- liftIO $
-    readShellProcessWithExitCode prog ["--version"]
+  (exitCode, stdOut, _stdErr) <- liftIO $ Turtle.procStrictWithErr
+    (Text.pack prog)
+    [Text.pack "--version"]
+    Control.Applicative.empty
   case exitCode of
-    ExitSuccess -> do
-      case lines stdOut of
-        (line:_) -> case takeWhile (`elem` ".0123456789")
-                       $ dropWhile (not . Char.isNumber) line of
-          "" -> err
-          s -> do
-            pushLog LogLevelInfoVerbose $ "detected " ++ prog ++ " version " ++ s
-            case mapM readMaybe $ Split.splitOn "." s of
-              Just vs -> return vs
-              Nothing -> err
+    ExitSuccess   -> do
+      case lines (Text.unpack stdOut) of
+        (line:_) ->
+          case
+              takeWhile (`elem`".0123456789")
+                $ dropWhile (not . Char.isNumber) line
+            of
+              "" -> err
+              s  -> do
+                pushLog LogLevelInfoVerbose
+                  $  "detected "
+                  ++ prog
+                  ++ " version "
+                  ++ s
+                case mapM readMaybe $ Split.splitOn "." s of
+                  Just vs -> return vs
+                  Nothing -> err
         _ -> err
     ExitFailure _ -> err
 
@@ -232,7 +235,7 @@
           -- hClose errh
 
         -- wait on the process
-        ex <- waitForProcess ph
+        ex <- Process.waitForProcess ph
 
         return ex
 
@@ -264,7 +267,7 @@
                -> IO ()
 cleanupProcess (mb_stdin, mb_stdout, mb_stderr,
                 ph@(ProcessHandle _ delegating_ctlc)) = do
-    terminateProcess ph
+    Process.terminateProcess ph
     -- Note, it's important that other threads that might be reading/writing
     -- these handles also get killed off, since otherwise they might be holding
     -- the handle lock and prevent us from closing, leading to deadlock.
@@ -281,7 +284,7 @@
     -- waitForProcess (which would otherwise end the Ctl-C delegation itself).
     when delegating_ctlc
       stopDelegateControlC
-    _ <- forkIO (waitForProcess (resetCtlcDelegation ph) >> return ())
+    _ <- forkIO (Process.waitForProcess (resetCtlcDelegation ph) >> return ())
     return ()
   where
     resetCtlcDelegation (ProcessHandle m _) = ProcessHandle m False
diff --git a/src/Development/Iridium/Hackage.hs b/src/Development/Iridium/Hackage.hs
--- a/src/Development/Iridium/Hackage.hs
+++ b/src/Development/Iridium/Hackage.hs
@@ -130,7 +130,6 @@
    . ( MonadIO m
      , MonadPlus m
      , MonadMultiReader Config m
-     , MonadMultiReader Infos m
      , MonadMultiState LogState m
      )
   => m ()
