diff --git a/Dangerous.cabal b/Dangerous.cabal
--- a/Dangerous.cabal
+++ b/Dangerous.cabal
@@ -1,5 +1,5 @@
 Name:          Dangerous
-Version:       0.2
+Version:       0.2.1
 License:       MIT
 License-file:  LICENSE
 Category:      Error Handling
diff --git a/src/Control/Dangerous.hs b/src/Control/Dangerous.hs
--- a/src/Control/Dangerous.hs
+++ b/src/Control/Dangerous.hs
@@ -11,6 +11,7 @@
     , warnings
     , result
     , execute
+    , extract
     ) where
 
 
@@ -140,8 +141,11 @@
 result :: (Either Exit a, [Warning]) -> Either Exit a
 result = fst
 
-execute :: Either Exit a -> IO a
-execute (Left (Stop s)) = putStrLn s >> exitSuccess
-execute (Left (Failure s)) = hPutStrLn stderr s >> exitFailure
-execute (Left (Exit n s)) = hPutStrLn stderr s >> exitWith (ExitFailure n)
-execute (Right a) = return a
+execute :: (Either Exit a, [Warning]) -> IO a
+execute (r, ws) = mapM_ print ws >> extract r
+
+extract :: Either Exit a -> IO a
+extract (Left (Stop s)) = putStrLn s >> exitSuccess
+extract (Left (Failure s)) = hPutStrLn stderr s >> exitFailure
+extract (Left (Exit n s)) = hPutStrLn stderr s >> exitWith (ExitFailure n)
+extract (Right a) = return a
