implement a list interface