Refactored to improve responsibility assignment