Abstract data types I've written for studies purpose