refactor list