optimize "parents" map to contain local roots instead
eliminate listeners
same primeId events are processed on one thread