implementation of list