completed draft of list_add