first pass at a message parser