starting major redesign, see comments