Refactory

Aside from rebasing against `master`, what else do we need/want to get in before merging this?

I started on tracking, but that can probably wait IMO.