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.3  -- 2016-04-22
+
+  * Include `cabal update` invocation by default
+  * Add warning for missing remote version
+
 ## 0.1.5.2  -- 2016-03-11
 
   * Improve stackage upper-bound check error output
diff --git a/data/default-iridium.yaml b/data/default-iridium.yaml
--- a/data/default-iridium.yaml
+++ b/data/default-iridium.yaml
@@ -29,6 +29,11 @@
     (because that would require modifying `.cabal/config`,)'
   remote-server: http://hackage.haskell.org
 
+  run-cabal-update: True
+  run-cabal-update-help: ! 'Execute cabal update before performing any checks.
+    Useful when running the stackage upper bounds check, which may erroneously
+    report errors if your cabal package index is not up to date.'
+
 process:
   dry-run-help: |
     only run all checks/tests, omit any side-effects/uploading
diff --git a/iridium.cabal b/iridium.cabal
--- a/iridium.cabal
+++ b/iridium.cabal
@@ -1,5 +1,5 @@
 name:                iridium
-version:             0.1.5.2
+version:             0.1.5.3
 synopsis:            Automated Testing and Package Uploading
 license:             BSD3
 license-file:        LICENSE
@@ -48,7 +48,7 @@
 
 source-repository head {
   type: git
-  location: git@github.com:lspitzner/iridium.git
+  location: https://github.com/lspitzner/iridium.git
 }
 
 library {
@@ -83,7 +83,7 @@
     , Cabal                  >=1.22.5.0 && <1.23
     , http-conduit           >=2.1.8    && <2.2
     , xmlhtml                >=0.2.3.4  && <0.3
-    , foldl                  >=1.1.5    && <1.2
+    , foldl                  >=1.1.5    && <1.3
     , bytestring             >=0.10.4.0 && <0.11
     , tagged                 >=0.8.3    && <0.9
     , 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
@@ -30,6 +30,7 @@
 import           Data.Tagged
 import           Data.List
 import           Data.HList.HList
+import           Data.Maybe
 
 import           Data.HList.ContainsType
 
@@ -216,6 +217,9 @@
   withMultiReader mergedConfig $ do
     infos <- retrieveInfos
     withMultiReader infos $ withMultiStateA initCheckState $ do
+      runCabalUpdate <- fromMaybe True `liftM` configIsTrueMaybeM ["setup", "run-cabal-update"]
+      when runCabalUpdate $ do
+        runCommandSuccessCabal ["update"]
       runChecks
       displaySetting      <- configIsTrueM     ["process", "print-summary"]
       existWarnings <- liftM ((/=0) . _check_warningCount) mGet
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
@@ -208,7 +208,9 @@
   localVersion <- askPackageVersion
   -- pushLog LogLevelDebug $ show $ _i_remote_version infos
   case _i_remote_version infos of
-    Nothing -> return True
+    Nothing -> do
+      pushLog LogLevelWarn $ "no remote version detected. This is harmless if the package is not on hackage yet."
+      return True
     Just remoteVers ->
       if localVersion == remoteVers
         then do
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
@@ -2,6 +2,8 @@
   ( parseConfigs
   , configIsTrue
   , configIsTrueM
+  , configIsTrueMaybe
+  , configIsTrueMaybeM
   , configIsEnabled
   , configIsEnabledM
   , configReadString
@@ -239,6 +241,12 @@
                       Just v' -> go pr v'
                       Nothing -> Nothing
                     _ -> Nothing
+
+configIsTrueMaybeM
+  :: MonadMultiReader Config m
+  => [String]
+  -> m (Maybe Bool)
+configIsTrueMaybeM ps = configIsTrueMaybe ps `liftM` mAsk
 
 configIsEnabledM
   :: MonadMultiReader Config m
diff --git a/src/Development/Iridium/UI/Prompt.hs b/src/Development/Iridium/UI/Prompt.hs
--- a/src/Development/Iridium/UI/Prompt.hs
+++ b/src/Development/Iridium/UI/Prompt.hs
@@ -25,9 +25,6 @@
 
 import           Control.Monad.Trans.MultiRWS
 
--- well, fuck Turtle, apparently.
--- no way to retrieve stdout, stderr and exitcode.
--- the most generic case, not supported? psshhh.
 import           System.Process
 import           System.IO ( hFlush, stdout )
 import           Control.Concurrent ( threadDelay )
