Simplified into several smaller methods

Broken up into smaller methods + must try harder comment from Enrique!

Rhys