simulation and view updates

add observer pattern