Add exit state, move away from pre-post events, because async