changed type coercion code to use lookup_descriptor so that we traverse MRO