Implement the rest of the message types (2nd attempt)

I managed to rebase on top of your repo.
The commit history should look better now.