prepare list first, then assign