@Override
 public InternalTitanTransaction startTransaction(TransactionConfig configuration) {
   try {
     return new StandardPersistTitanTx(this, etManager, configuration, storage.beginTransaction());
   } catch (StorageException e) {
     throw new TitanException("Could not start new transaction", e);
   }
 }
  @Override
  public synchronized void shutdown() throws TitanException {
    if (!isOpen) return;
    super.shutdown();
    etManager.close();
    idAssigner.close();

    try {
      edgeStore.close();
      propertyIndex.close();
      storage.close();
    } catch (StorageException e) {
      throw new TitanException("Could not close storage backend", e);
    }
    isOpen = false;
  }
 @Override
 public Features getFeatures() {
   return TitanFeatures.getFeatures(getConfiguration(), storage.getFeatures());
 }