implemented client side routing, refactored msg routing to use multimethods