Answer: We must find and change every line of code that depends upon the specific details of the implementation (e.g. available operations, naming conventions, details of syntax).
An abstract data type specifies the values and operations of a data type, without referring to how it will be implemented.
Applications coded only in terms of abstract data types can switch between implementations at no maintenance cost.