Refactor 2d

Ready for merge.  Lookin at you, Caswell
very much prefer the previous way of doing this.  For example this way this is useless for looking at data we can't store in memory/don't want to pull all of across the network.