One thing you could do here is have modifcation methods at this level, but have it delegate/proxy to a private SetOp, then provide a getOp method on each datatype.