segment abstract data type