smarter list merge