support inheritance
add test for multiple dispatch and inheritance

also raise not implemented error if no match found
handle competing multiple dispatch situations