a custom linked list implementation for practice