example abstract data