implemented list.c