Adding a handler for a new message type
---------------------------------------

- Write the handler.
- Provide an adapter, named with the message type, from the most
  up-to-date API interface to the handler.
- Do NOT update the API version.


Updating an existent handler in a compatible way
------------------------------------------------

- Change the existing handler in a way that it won't break current
  expectations (BE CAREFUL!). 
- You're done.


Changing an existent handler
----------------------------

- Copy the current handler to a new handler.
- Modify the new handler to reflect the new expectations.
- Use API version number <X>.<Y+1> (e.g. 1.0 => 1.1).
- Create a new interface subclassing the most up-to-date API interface.
- Create a new subclass of the most up-to-date API implementation.
- Provide the new message API.
- Provide an adapter, named with the message type, from the new API 
  interface to the new handler.


Removing a handler for an existent message type
-----------------------------------------------

- Use API version number <X>.<Y+1> (e.g. 1.0 => 1.1).
- Create a new interface subclassing the most up-to-date API interface.
- Create a new subclass of the most up-to-date API implementation.
- Provide the new message API.
- Provide an adapter, named with the message type, from the new API 
  interface to canonical.message.handler.NoHandler.


Changing the payload format
---------------------------

- Use API version number <X+1>.0 (e.g. 1.1 => 2.0).
- Create a new interface subclassing LandscapeMessageAPI.
- Create a new message API class.
- Provide the new message API.
- Plug existing handlers or newly written ones in the new API.

