I don't like so many classes with similar functionality, the only difference is in operation type. Can we use some meta-programming here and try to reduce the number of classes ?