message handlers are based on the actual message, and not just some generic contract id