Clean reimplementation to fix issue #2509

Please do not yet merge this one, it is to find the best solution
Why not `void setResponseHandler(ResponseHandler responseHandler)`? Is returned value used anywhere? If not then we can remove generic from class definition `public interface CallType {}`.