list refactor