Wip chat

This is a work in progress. Currently messages don't save correctly, and there some wonkiness with the flow around null/default cases, but you can get an idea