Reduce Complexity

I did a bunch of stuff to make Scrutinizer happy and I think the score ended up being a fraction worse. 

Some of those larger and more complex methods are going to be tough to break up, without making a method for each case statement. 

I'll leave you to look into other stuff, but there should be a few useful bits in here.