changed update() to an optional override so users can utilise it;
populationDirector now calls internalUpdate(), which is private.