Further abstractions and added basic NPC class design.