What is an Abstract Data Type after all?