class CassandraJobStore implements JobStore {

    @Override
    public Completable updateTask(Task task) {
        return Observable.fromCallable((Callable<Statement>) () -> {
            String jobId = task.getJobId();
            String taskId = task.getId();
            checkIfJobIsActive(jobId);
            String taskJsonString = ObjectMappers.writeValueAsString(mapper, task);

            transactionLogger().logBeforeUpdate(insertActiveTaskStatement, "updateTask", task);

            return insertActiveTaskStatement.bind(taskId, taskJsonString);
        }).flatMap(statement -> {
                    transactionLogger().logAfterUpdate(insertActiveTaskStatement, "updateTask", task);
                    return execute(statement);
                }
        ).toCompletable();
    }

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

}