-changed the structure slightly, added additional class hierarchy for agents