Refactor 2d

Ready for merge.  Lookin at you, Caswell
The previous way also allows this to integrate well with realtime data