Better subtyping with abstract types.