singly linked list implementation with interface