diff --git a/download-sdmf/Main.hs b/download-sdmf/Main.hs
index 6078709a3bf36d0f5d149cc80228b2e152ecd48b..a42c2f1771e854a5e6e87c1932b633e875cc84cb 100644
--- a/download-sdmf/Main.hs
+++ b/download-sdmf/Main.hs
@@ -2,6 +2,8 @@
 
 module Main where
 
+import Control.Monad.Except (runExceptT)
+import Control.Monad.IO.Class (MonadIO (liftIO))
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Char8 as C8
 import qualified Data.ByteString.Lazy as BL
@@ -29,8 +31,9 @@ main = do
   where
     go announcements cap = do
         -- Download & decode the shares
-        result <- download announcements cap announcementToMutableStorageServer
+        result <- runExceptT $ download announcements cap announcementToMutableStorageServer
 
         -- Show the result
-        putStrLn "Your result:"
-        either print (C8.putStrLn . BL.toStrict) result
+        liftIO $ do
+            putStrLn "Your result:"
+            either print (C8.putStrLn . BL.toStrict) result
diff --git a/gbs-downloader.cabal b/gbs-downloader.cabal
index 7454b5929c73d0d0235fbf62858d6bb760ebc1aa..edf629c4085b567f991ac16046da784005efa6fc 100644
--- a/gbs-downloader.cabal
+++ b/gbs-downloader.cabal
@@ -181,6 +181,7 @@ executable download-sdmf
     , containers      >=0.6.0.1  && <0.7
     , gbs-downloader
     , megaparsec      >=8.0      && <9.3
+    , mtl             >=2.2.2    && <2.4
     , tahoe-ssk       >=0.3      && <0.4
     , text            >=1.2.3.1  && <1.3
     , yaml            >=0.11.5.0 && <0.11.9.0 || >=0.11.9.0.0 && <0.12