added more generic spawner