class ImpressionStorageClient {

  public Maybe<CampaignImpressionList> getAllImpressions() {
    return cachedImpressionsMaybe
        .switchIfEmpty(
            storageClient.read(CampaignImpressionList.parser()).doOnSuccess(this::initInMemCache))
        .doOnError(ignored -> clearInMemCache());
  }

  @Inject  ImpressionStorageClient(@ImpressionStore ProtoStorageClient storageClient);

}