use more ad-hoc list handling function, and avoid to muck with ->next