add message creation methods.
ISSUE_240
Merge remote-tracking branch 'upstream/ISSUE_240'
ISSUE_242
Merge remote-tracking branch 'upstream/ISSUE_242_2'
ISSUE_245