Splitting the logic out into a separate class (or classes) is the way to go. Putting it all into one spot violates the principles of SOLID and DRY design. You're definitely on the right track with your approach.
The more you keep your classes focused on single roles the easier your life will be for maintenance and testing.