refactored List