finally have working simulation with reasonable behavior. some parameters may need tweaking to improve accuracy