added conformance to return type checking in M