List as abstract data type