class CassandraJobStore implements JobStore {

    @Override
    public Completable updateJob(Job job) {
        return Observable
                .fromCallable((Callable<Statement>) () -> {
                    String jobId = job.getId();
                    checkIfJobIsActive(jobId);
                    String jobJsonString = writeJobToString(job);

                    transactionLogger().logBeforeUpdate(insertActiveJobStatement, "updateJob", job);
                    return insertActiveJobStatement.bind(jobId, jobJsonString);
                })
                .flatMap(statement ->
                        execute(statement).doOnNext(rs -> transactionLogger().logAfterUpdate(insertActiveJobStatement, "updateJob", job))
                )
                .toCompletable();
    }

    @Inject public  CassandraJobStore(CassandraStoreConfiguration configuration,
                             Session session,
                             TitusRuntime titusRuntime);
      CassandraJobStore(CassandraStoreConfiguration configuration,
                      Session session,
                      TitusRuntime titusRuntime,
                      ObjectMapper mapper,
                      int initialBucketCount,
                      int maxBucketSize);

}