Throwing commits at the wall.

This branch has become far too large. Will re-work.