cleaned up some design, added some dimensionality