Refactored to separate the main spray actor from spray routing