Abstract Data Types Implementation