Simplified into several smaller methods