@Override
  public <DB extends ODatabase> DB create() {
    setCurrentDatabaseinThreadLocal();

    try {
      super.create();

      level1Cache.startup();

      getStorage().getConfiguration().update();

      if (getStorage() instanceof OStorageEmbedded) {
        registerHook(new OUserTrigger());
        registerHook(new OClassIndexManager());
      }

      // CREATE THE DEFAULT SCHEMA WITH DEFAULT USER
      metadata = new OMetadata();
      metadata.create();

      user = getMetadata().getSecurity().getUser(OUser.ADMIN);
    } catch (Exception e) {
      throw new ODatabaseException("Cannot create database", e);
    }
    return (DB) this;
  }