implement mixin subtyping