Abstract Data Types in Ada