understand type compatibility