add subtyping