Having a go at a 'complex' method

  Breaks the method up