Added MessageModel and refactored parsing into separate parser classes plus other supporting changes.