implement dynamic npc lifetime
support Arrays instead of ArrayLists
finish refactor
rename