Update of current design from pashamur and bfaviero's Github, in addition to czuo's discarded design.
Merge with upstream changes
remove extra Message class
fix protoroom