some refefactoring done: start functions do the spawning and are encapsulated within their modules