adding more sophisticated list functionality