Why do we need a structural type?