diff --git a/Control/Workflow.hs b/Control/Workflow.hs
--- a/Control/Workflow.hs
+++ b/Control/Workflow.hs
@@ -659,9 +659,15 @@
                    mst <- readDBRef sref
                    stat' <- case mst of
                           Nothing -> error $ "getState: Workflow not found: "++ key
-                          Just s -> do
+                          Just s' -> do
                              -- the thread may have been killed by an exception when running
-                             when(not $ recover  s) $ error ("flow "++key++ "found in a wrong state: report it")
+                             s <- case recover  s' of
+                                 True -> return s'
+                                 False -> do
+                                   s'' <- safeIOToSTM $ readResource s' `onNothing` return stat1
+                                   let i= state s''
+                                       j= state s'
+                                   return s'{versions= versions s'' ++ L.reverse ( L.take ( j - i) $ versions s')}
                              if isJust (timeout s)
                               then do
                                   tnow <- unsafeIOToSTM getTimeSeconds
@@ -700,7 +706,7 @@
    clearFromRunningList n = atomicallySync $ do
       Just(Running map) <-  readDBRef tvRunningWfs           -- !> "clearFormRunning"
       writeDBRef tvRunningWfs . Running $ M.delete   n   map -- `debug` "clearFromRunningList"
-      flushDBRef (getDBRef n ::  DBRef Stat)
+--      flushDBRef (getDBRef n ::  DBRef Stat)
 -- | Start or continue a workflow  from a list of workflows  with exception handling.
 --  see 'start' for details about exception and error handling
 startWF
@@ -886,7 +892,7 @@
     Just(_, Nothing) -> return (map,Nothing)
     Just(v, Just th) -> do
       writeDBRef tvRunningWfs . Running $ M.insert name (v, Nothing) map
-      flushDBRef (getDBRef $ keyResource stat0{wfName=name} ::  DBRef Stat)
+--      flushDBRef (getDBRef $ keyResource stat0{wfName=name} ::  DBRef Stat)
       return (map,Just th)
     Nothing  ->
       return (map, Nothing)
diff --git a/Control/Workflow/Configuration.hs b/Control/Workflow/Configuration.hs
--- a/Control/Workflow/Configuration.hs
+++ b/Control/Workflow/Configuration.hs
@@ -16,6 +16,7 @@
 import Data.RefSerialize
 import Control.Monad.Trans
 import Control.Exception
+import Control.Monad.CatchIO as CMC
 
 -------------- configuation
 -- | to execute a computation every time it is invoked. A synonimous of `unsafeIOtoWF`
@@ -27,8 +28,8 @@
 once= step
 
 -- | executes a computation with `once` and `ever` statements
-runConfiguration confname confProc =  handle (\(e :: SomeException) -> return ())
-    $ exec1 confname $ do
-       confProc
-       error ""
-       step $ return ()
+-- a synonym of `exec1nc`
+runConfiguration :: (  Monad m, MonadIO m, CMC.MonadCatchIO m)
+                 => String ->  Workflow m a ->   m  a
+runConfiguration  = exec1nc
+
diff --git a/Demos/pr.hs b/Demos/pr.hs
--- a/Demos/pr.hs
+++ b/Demos/pr.hs
@@ -4,7 +4,10 @@
 
 
 
-main = getName >>= putStrLn
+main = do
+ syncWrite SyncManual
+ getName >>= putStrLn
+ main
 
 getName=  exec1nc "test" $ do
     name <- step $ do
diff --git a/Workflow.cabal b/Workflow.cabal
--- a/Workflow.cabal
+++ b/Workflow.cabal
@@ -1,5 +1,5 @@
 name: Workflow
-version: 0.7.0.6
+version: 0.7.0.7
 cabal-version: >= 1.6
 build-type: Simple
 license: BSD3
