added linked list implementation