added subtyping on type annotations