Smart messages

The name of this pull request is a bit of a misnomer, as the messages aren't smart quite yet. This makes every message a switch/case inside a method, which means that in the future it will be possible to pass data to the strings.