refactor singlist