Separating Models and Agents
Separating the world agent from its behaviour
Separating the hero agent from its behaviours