allow signature return type annotations to provide a more specific return object type for def functions