lots of changes--better design and less wonky data handling