generate list functions