[quote="mikedee"] I suspect a major advantage of the WRAP / UNWRAP macros is speed.[/quote] linked lists can be very fast too, just something like: WRAP: s->functionList = s->functionList->next; s->function = s->functionList->function; UNWRAP: s->functionList = s->functionList->prev; s->function = s->functionList->function; probably as fast as the normal WRAP / UNWRAP.