A general abstraction for manipulating elements of container data structures