This solves some problems created by making the publicreport part of the
communication API consistent. There are a lot of optimizations still on
the table with this one, but for now I need to get this out.
This makes it possible to start hydrating the types into valid data
types like Dates which means I can get type safety guarantees when
displaying information.