npc inheritance, refactoring