abstracted spawning