Style refactoring using static private methods where possible and 'factories'