Also moves event related functions (wake/wait/suspend) from ProcedureScheduler to ProcedureEvent class