Broke down into smaller methods