Multimethods

closes #493