Cleaned everything up into one method