tightened up list definition; some functions actually don't require list* passed in