erlang: implementing step logic