Refactored and respeced