generic operators - data directed programming