class AggregatingJobServiceGateway implements JobServiceGateway {

    @Override
    public Observable<JobChangeNotification> observeJob(String jobId, CallMetadata callMetadata) {
        JobId request = JobId.newBuilder().setId(jobId).build();
        return jobManagementServiceHelper.findJobInAllCells(jobId, callMetadata)
                .flatMap(response -> singleCellCallWithNoDeadline(response.getCell(),
                        (client, streamObserver) -> client.observeJob(request, streamObserver),
                        callMetadata)
                );
    }

    @Inject public  AggregatingJobServiceGateway(GrpcConfiguration grpcConfiguration,
                                        TitusFederationConfiguration federationConfiguration,
                                        CellConnector connector,
                                        CellRouter router,
                                        AggregatingCellClient aggregatingClient,
                                        AggregatingJobManagementServiceHelper jobManagementServiceHelper);

}