Attempt to fix error handling

You can toss in some asserts, but Message should only be used internally, so I'm not really sure it matters that much.