respawn refactored
merged