Clean reimplementation to fix issue #2509

Please do not yet merge this one, it is to find the best solution
I'm not sure about name `CallType` btw. Since `RemoteOperationExceptionHandler` doesn't seem to be a call. Do we really need to inherit `RemoteOperationExceptionHandler` and `Operation` from the same type?