Added an NPC abstract class, has small errors