correct usage of adt, should be referenced by pointers