diff --git a/Dangerous.cabal b/Dangerous.cabal
--- a/Dangerous.cabal
+++ b/Dangerous.cabal
@@ -1,5 +1,5 @@
 Name:          Dangerous
-Version:       0.1.2
+Version:       0.2
 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
@@ -3,11 +3,7 @@
     , Warning(..)
     , Dangerous(..)
     , DangerousT(..)
-    , warn
-    , throw
-    , throw_
-    , stop
-    , stop_
+    , Errorable(..)
     , succeeded
     , failed
     , stopped
@@ -87,9 +83,8 @@
     fail s = Dangerous (Left $ Failure s, [])
     return x = Dangerous (Right x, [])
     (Dangerous (Left e, ws)) >>= _ = Dangerous (Left e, ws)
-    (Dangerous (Right v, ws)) >>= f = Dangerous $ case f v of
-        Dangerous (Right v', ws') -> (Right v', ws ++ ws')
-        Dangerous (Left e, ws') -> (Left e, ws ++ ws')
+    (Dangerous (Right v, ws)) >>= f = Dangerous $
+        second (ws ++) $ runDangerous $ f v
 
 instance Errorable Dangerous where
     log w = Dangerous (Right (), [w])
