let get_output (p: pointer) (ie:input_event) 
: output_event list = 
match (p (label_input ie)) with 
   Waiting sw ->     
      let (s2, oes2) = receive ie sw in 
      oes2
   | Running rw -> raise WrongStateInGetOutput