clean up code; put common list operations into macros