moved value codec methods into the base class
message keys can now be decoded into specific types (including JSON)