Move some methods into AbstractNPC, implement sorted()