refector using state_machine
add EventOrder status transition logger