Metadata

STATUS: READY to be merged

Make this pull request to make the code review easier.

Main changes:
* Add support for metadata community.
* Add support for handling custom message check and store callbacks.