it might be nice to make this more componenty - having an explicit object whose job it is to take in data structured a certain way and spit it back out in another way, and then pass that object to the constructor. that said, this is also fine and more consistent with what we do in reports for other things...