diff --git a/Control/Wire/Wire.hs b/Control/Wire/Wire.hs
--- a/Control/Wire/Wire.hs
+++ b/Control/Wire/Wire.hs
@@ -155,9 +155,9 @@
     loop w' =
         mkGen $ \dt x' ->
             liftM (fmap fst *** loop) .
-            mfix $ \(mx, _) ->
+            mfix $ \ ~(mx, _) ->
                 let feedbackErr = error "Feedback loop broken by inhibition" in
-                stepWire w' dt (x', either feedbackErr snd mx)
+                stepWire w' dt (x', either (const feedbackErr) snd mx)
 
 instance (Monad m, Monoid e) => ArrowPlus (Wire e m) where
     (<+>) = (<|>)
diff --git a/netwire.cabal b/netwire.cabal
--- a/netwire.cabal
+++ b/netwire.cabal
@@ -1,5 +1,5 @@
 Name:          netwire
-Version:       4.0.0
+Version:       4.0.1
 Category:      Control, FRP
 Synopsis:      Flexible wire arrows for FRP
 Maintainer:    Ertugrul Söylemez <es@ertes.de>
@@ -82,8 +82,8 @@
 --     Default-language: Haskell2010
 --     Default-extensions:
 --         Arrows
---         DoRec
 --         OverloadedStrings
+--         RecursiveDo
 --         TupleSections
 --     Hs-source-dirs: test
 --     Main-is: Main.hs
