refactoring around the needs system so that sub systems can also drive spawning needs