-- | initialize the event variable for finalization.
-- all the following computations in different threads will share it
-- it also isolate this event from other branches that may have his own finish variable
initFinish :: TransIO Finish
initFinish= do
      fin <-  newEVar
      let f = Finish fin
      setData  f
      return  f

-- | set a computation to be called when the finish event happens
initFinish :: TransIO Finish
initFinish= do
      fin <-  newEVar
      let f = Finish fin
      setData  f
      return  f

-- | set a computation to be called when the finish event happens
initFinish= do
      fin <-  newEVar
      let f = Finish fin
      setData  f
      return  f

-- | set a computation to be called when the finish event happens