Это не косяк, это разные подходы. То, о чем вы говорите - это расширяемость существующей системы, OpenClosed, повторное использование и всё такое. ADT же про проектирование модели данных, это целостная, монолитная модель, описывающая инварианты. К ней OpenClosed не применим - т.к. при изменении модели данных придется менять код, который с ней работает.