merge fsm branch, call it v0.9.0