Added CachedMessage that caches the calls to generate the Strings, this speeds up the repeated calls to toMessageJson()