basic list implementation
Using struct list_head everywhere