Changed function pointer to function object, replaced operator() with named method and added secondary methods for other operations.