reference each other's types