interface and list implementation