Working on messenger.
Merge branch `rewrite` into `master`.
Move network code to Messenger object.
Merge branch `rewrite` into `master`.