Use multi-methods for handling messages