I agree this should be broken up, since this is a large method. However there are lots of large methods which all cannot be done, and this pull request has already done quite a bit of cleanup including adding a good handful of unit tests.