subtyping transitivity!