Don't mess with the update method. The update method is for logic that needs to happen multiple times a second like collision detection, moving (you only move a little at a time so collision detection works right), gathering information from the (to be implemented) sensors, and even sending info to the ANN. 

Notify is for sending information to an object which the object can use to mutate its state. Note that it's the object receiving the notify message that chooses how to change its internal state. Also note that this can happen asynchronously, so it should be quick and not actually change the game, just the object's internal state. The object can then use this information to act differently during the next update() method call.

An example would be this: The simulation receives a "move forward" command over the socket connection. It calls "notify("move forward") on the player object, the player object merely records this in its notify method. During the player object's next update method call, it then uses the fact that it received a "move forward" command to actually move forward.

In other words, you need both, and update is where changes to the game happen, but notify is where changes to the state of game objects (which later change the game) happen.