Many bugs fixed, but now have a race condition with messages showing up from one process before the receiving process has gotten its step command. handle_call() cannot deal with out of order messages so perhaps time to switch to gen_fsm