add simple promise implementation
add new states to state machine