Include updated usage on list functions.
Use node pointers instead of duplicating the find function logic.
Instead of using macros, use iterators built-in on each list for filtering and traversing.