diff --git a/app/lib/dal/indexDAL/loki/LokiCIndex.ts b/app/lib/dal/indexDAL/loki/LokiCIndex.ts
deleted file mode 100644
index eae9e7a1336d08e44cd40c3c401eac6504e8214d..0000000000000000000000000000000000000000
--- a/app/lib/dal/indexDAL/loki/LokiCIndex.ts
+++ /dev/null
@@ -1,178 +0,0 @@
-import {CIndexDAO} from "../abstract/CIndexDAO"
-import {CindexEntry, FullCindexEntry, Indexer} from "../../../indexer"
-import {CommonConstants} from "../../../common-libs/constants"
-import {MonitorLokiExecutionTime} from "../../../debug/MonitorLokiExecutionTime"
-import {LokiProtocolIndex} from "./LokiProtocolIndex"
-import {MonitorExecutionTime} from "../../../debug/MonitorExecutionTime"
-
-export class LokiCIndex extends LokiProtocolIndex<CindexEntry> implements CIndexDAO {
-
-  constructor(loki:any) {
-    super(loki, 'cindex', ['issuer', 'receiver'])
-  }
-
-  @MonitorExecutionTime()
-  async existsNonReplayableLink(issuer: string, receiver: string): Promise<boolean> {
-    return Indexer.DUP_HELPERS.reduce<CindexEntry>(
-      this.collection
-        .chain()
-        .find({
-          $and: [
-            { issuer },
-            { receiver },
-          ]
-        })
-        .simplesort('writtenOn')
-        .data()
-    ).op === CommonConstants.IDX_CREATE
-  }
-
-  @MonitorExecutionTime()
-  async findByIssuerAndChainableOnGt(issuer: string, medianTime: number): Promise<CindexEntry[]> {
-    return this.collection
-      .chain()
-      .find({
-        $and: [
-          { issuer },
-          { chainable_on: { $gt: medianTime } },
-        ]
-      })
-      .simplesort('writtenOn')
-      .data()
-  }
-
-  @MonitorExecutionTime()
-  async findByIssuerAndReceiver(issuer: string, receiver: string): Promise<CindexEntry[]> {
-    return this.collection
-      .chain()
-      .find({
-        $and: [
-          { issuer },
-          { receiver },
-        ]
-      })
-      .simplesort('writtenOn')
-      .data()
-  }
-
-  @MonitorExecutionTime()
-  async findByReceiverAndExpiredOn(pub: string, expired_on: number): Promise<CindexEntry[]> {
-    return this.collection
-      .chain()
-      .find({
-        $and: [
-          { receiver: pub },
-          { expired_on },
-        ]
-      })
-      .simplesort('writtenOn')
-      .data()
-  }
-
-  @MonitorExecutionTime()
-  async findExpiresOnLteNotExpiredYet(medianTime: number): Promise<CindexEntry[]> {
-    return this.collection
-      .chain()
-      .find({ expires_on: { $lte: medianTime } })
-      .simplesort('writtenOn')
-      .data()
-      .filter(c => {
-        return this.collection
-          .find({
-            op: CommonConstants.IDX_UPDATE,
-            issuer: c.issuer,
-            receiver: c.receiver,
-            created_on: c.created_on,
-          })
-          .length === 0
-      })
-  }
-
-  @MonitorExecutionTime()
-  async reducablesFrom(from: string): Promise<FullCindexEntry[]> {
-    const reducables = this.collection
-      .chain()
-      .find({ issuer: from })
-      .simplesort('writtenOn')
-      .data()
-    return Indexer.DUP_HELPERS.reduceBy(reducables, ['issuer', 'receiver', 'created_on'])
-  }
-
-  @MonitorExecutionTime()
-  async getReceiversAbove(minsig: number): Promise<string[]> {
-    const reduction = this.collection
-      .find({})
-      .reduce((map:any, c) => {
-        if (!map[c.receiver]) {
-          map[c.receiver] = 0
-        }
-        map[c.receiver]++
-        return map
-      }, {})
-    return Object.keys(reduction)
-      .map(receiver => ({ receiver, count: reduction[receiver]}))
-      .filter(o => o.count >= minsig)
-      .map(o => o.receiver)
-  }
-
-  @MonitorExecutionTime()
-  async getValidLinksFrom(issuer: string): Promise<CindexEntry[]> {
-    return this.collection
-      .find({ issuer })
-      .filter(r => this.collection.find({ issuer: r.issuer, receiver: r.receiver, created_on: r.created_on, expired_on: { $gt: 0 } }).length === 0)
-  }
-
-  @MonitorExecutionTime()
-  async getValidLinksTo(receiver: string): Promise<CindexEntry[]> {
-    return this.collection
-      .find({ receiver })
-      .filter(r => this.collection.find({ issuer: r.issuer, receiver: r.receiver, created_on: r.created_on, expired_on: { $gt: 0 } }).length === 0)
-  }
-
-  @MonitorLokiExecutionTime(true)
-  @MonitorExecutionTime()
-  async trimExpiredCerts(belowNumber: number): Promise<void> {
-    const expired = this.collection.find({
-      $and: [
-        { expired_on: { $gt: 0 }},
-        { writtenOn: { $lt: belowNumber }},
-      ]
-    })
-    for (const e of expired) {
-      this.collection
-        .chain()
-        .find({
-          issuer: e.issuer,
-          receiver: e.receiver,
-          created_on: e.created_on
-        })
-        .remove()
-    }
-  }
-
-  /**
-   * For CINDEX, trimming records <=> removing the expired certs
-   * @param {number} belowNumber Number below which an expired certification must be removed.
-   * @returns {Promise<void>}
-   */
-  @MonitorExecutionTime()
-  async trimRecords(belowNumber: number): Promise<void> {
-    return this.trimExpiredCerts(belowNumber)
-  }
-
-  private reduced(issuer:string, receiver:string, created_on:number): FullCindexEntry {
-    return Indexer.DUP_HELPERS.reduce(this.reducable(issuer, receiver, created_on))
-  }
-
-  private reducable(issuer:string, receiver:string, created_on:number): CindexEntry[] {
-    return this.collection.chain()
-      .find({ issuer, receiver, created_on })
-      .simplesort('writtenOn')
-      .data()
-  }
-
-  @MonitorExecutionTime()
-  async findByIssuer(issuer: string): Promise<CindexEntry[]> {
-    return this.findRaw({ issuer })
-  }
-}
diff --git a/app/lib/dal/indexDAL/sqlite/SqliteCIndex.ts b/app/lib/dal/indexDAL/sqlite/SqliteCIndex.ts
deleted file mode 100644
index 5935a710fc794ed67b5fa3ab2a5b58e7030a27cc..0000000000000000000000000000000000000000
--- a/app/lib/dal/indexDAL/sqlite/SqliteCIndex.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-import {CindexEntry, FullCindexEntry, Indexer} from "../../../indexer"
-import {SQLiteDriver} from "../../drivers/SQLiteDriver"
-import {MonitorExecutionTime} from "../../../debug/MonitorExecutionTime"
-import {SqliteTable} from "./SqliteTable"
-import {SqlNotNullableFieldDefinition, SqlNullableFieldDefinition} from "./SqlFieldDefinition"
-import {CIndexDAO} from "../abstract/CIndexDAO"
-
-export class SqliteCIndex extends SqliteTable<CindexEntry> implements CIndexDAO {
-
-  constructor(getSqliteDB: (dbName: string)=> Promise<SQLiteDriver>) {
-    super(
-      'cindex',
-      {
-        'op':           new SqlNotNullableFieldDefinition('CHAR', false, 6),
-        'written_on':   new SqlNotNullableFieldDefinition('VARCHAR', false, 80),
-        'writtenOn':    new SqlNotNullableFieldDefinition('INT', true),
-        'issuer':       new SqlNotNullableFieldDefinition('VARCHAR', true, 50),
-        'receiver':     new SqlNotNullableFieldDefinition('VARCHAR', true, 50),
-        'created_on':   new SqlNullableFieldDefinition('INT', true),
-        'sig':          new SqlNullableFieldDefinition('VARCHAR', true, 100),
-        'chainable_on': new SqlNullableFieldDefinition('INT', true),
-        'expires_on':   new SqlNullableFieldDefinition('INT', true),
-        'expired_on':   new SqlNullableFieldDefinition('INT', true),
-      },
-      getSqliteDB
-    )
-  }
-
-  /**
-   * TECHNICAL
-   */
-
-  cleanCache(): void {
-  }
-
-  triggerInit(): void {
-  }
-
-  /**
-   * INSERT
-   */
-
-  @MonitorExecutionTime()
-  async insert(record: CindexEntry): Promise<void> {
-    await this.insertInTable(this.driver, record)
-  }
-
-  @MonitorExecutionTime()
-  async insertBatch(records: CindexEntry[]): Promise<void> {
-    if (records.length) {
-      return this.insertBatchInTable(this.driver, records)
-    }
-  }
-
-  /**
-   * DELETE
-   */
-
-  @MonitorExecutionTime()
-  async removeBlock(blockstamp: string): Promise<void> {
-    await this.driver.sqlWrite(`DELETE FROM cindex WHERE written_on = ?`, [blockstamp])
-  }
-
-  @MonitorExecutionTime()
-  async trimRecords(belowNumber: number): Promise<void> {
-    await this.trimExpiredCerts(belowNumber)
-  }
-
-  /**
-   * FIND
-   */
-
-  @MonitorExecutionTime()
-  async getWrittenOn(blockstamp: string): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex WHERE written_on = ?', [blockstamp])
-  }
-
-  @MonitorExecutionTime()
-  async findRawWithOrder(criterion: { pub?: string }, sort: (string | (string | boolean)[])[]): Promise<CindexEntry[]> {
-    let sql = `SELECT * FROM cindex ${criterion.pub ? 'WHERE pub = ?' : ''}`
-    if (sort.length) {
-      sql += ` ORDER BY ${sort.map(s => `${s[0]} ${s[1] ? 'DESC' : 'ASC'}`).join(', ')}`
-    }
-    return this.find(sql, criterion.pub ? [criterion.pub] : [])
-  }
-
-  private async find(sql: string, params: any[]): Promise<CindexEntry[]> {
-    return (await this.driver.sqlRead(sql, params)).map(r => {
-      return {
-        index: 'CINDEX',
-        op: r.op,
-        written_on: r.written_on,
-        writtenOn: r.writtenOn,
-        issuer: r.issuer,
-        receiver: r.receiver,
-        created_on: r.created_on,
-        sig: r.sig,
-        chainable_on: r.chainable_on,
-        expires_on: r.expires_on,
-        expired_on: r.expired_on,
-        age: 0,
-        unchainables: 0,
-        stock: 0,
-        from_wid: null,
-        to_wid: null,
-      }
-    })
-  }
-
-  /**
-   * OTHER
-   */
-
-  async existsNonReplayableLink(issuer: string, receiver: string): Promise<boolean> {
-    return (await this.find('SELECT * FROM cindex c1 ' +
-      'WHERE c1.op = ?' +
-      'AND issuer = ? ' +
-      'AND receiver = ? ' +
-      'AND NOT EXISTS (' +
-      '  SELECT *' +
-      '  FROM cindex c2' +
-      '  WHERE c1.issuer = c2.issuer' +
-      '  AND c1.receiver = c2.receiver' +
-      '  AND c1.created_on = c2.created_on' +
-      '  AND c2.writtenOn > c1.writtenOn' +
-      ')', ['CREATE', issuer, receiver])).length > 0
-  }
-
-  findByIssuer(issuer: string): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex ' +
-      'WHERE issuer = ? ', [issuer])
-  }
-
-  findByIssuerAndChainableOnGt(issuer: string, medianTime: number): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex ' +
-      'WHERE issuer = ? ' +
-      'AND chainable_on > ?', [issuer, medianTime])
-  }
-
-  findByIssuerAndReceiver(issuer: string, receiver: string): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex ' +
-      'WHERE issuer = ? ' +
-      'AND receiver = ?', [issuer, receiver])
-  }
-
-  async findByReceiverAndExpiredOn(pub: string, expired_on: number): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex ' +
-      'WHERE receiver = ? ' +
-      'AND expired_on = ?', [pub, expired_on])
-  }
-
-  findExpiresOnLteNotExpiredYet(medianTime: number): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex c1 ' +
-      'WHERE c1.expires_on <= ? ' +
-      'AND NOT EXISTS (' +
-      '  SELECT *' +
-      '  FROM cindex c2' +
-      '  WHERE c1.issuer = c2.issuer' +
-      '  AND c1.receiver = c2.receiver' +
-      '  AND c1.created_on = c2.created_on' +
-      '  AND c2.writtenOn > c1.writtenOn' +
-      ')', [medianTime])
-  }
-
-  async getReceiversAbove(minsig: number): Promise<string[]> {
-    return (await this.find('SELECT DISTINCT(c1.receiver) FROM cindex c1 ' +
-      'GROUP BY c1.receiver ' +
-      'HAVING COUNT(c1.issuer) > ?', [minsig])).map(r => r.receiver)
-  }
-
-  getValidLinksFrom(issuer: string): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex c1 ' +
-      'WHERE c1.issuer = ? ' +
-      'AND NOT EXISTS (' +
-      '  SELECT *' +
-      '  FROM cindex c2' +
-      '  WHERE c1.issuer = c2.issuer' +
-      '  AND c1.receiver = c2.receiver' +
-      '  AND c1.created_on = c2.created_on' +
-      '  AND c2.writtenOn > c1.writtenOn' +
-      '  AND c2.expired_on IS NOT NULL' +
-      ')', [issuer])
-  }
-
-  async getValidLinksTo(receiver: string): Promise<CindexEntry[]> {
-    return this.find('SELECT * FROM cindex c1 ' +
-      'WHERE c1.receiver = ? ' +
-      'AND NOT EXISTS (' +
-      '  SELECT *' +
-      '  FROM cindex c2' +
-      '  WHERE c1.issuer = c2.issuer' +
-      '  AND c1.receiver = c2.receiver' +
-      '  AND c1.created_on = c2.created_on' +
-      '  AND c2.writtenOn > c1.writtenOn' +
-      '  AND c2.expired_on IS NOT NULL' +
-      ')', [receiver])
-  }
-
-  async reducablesFrom(from: string): Promise<FullCindexEntry[]> {
-    const certs = await this.find('SELECT * FROM cindex WHERE issuer = ? ORDER BY issuer, receiver, created_on, writtenOn', [from])
-    return Indexer.DUP_HELPERS.reduceBy(certs, ['issuer', 'receiver', 'created_on'])
-  }
-
-  async trimExpiredCerts(belowNumber: number): Promise<void> {
-    const certs = await this.find('SELECT * FROM cindex WHERE expired_on > 0 AND writtenOn < ?', [belowNumber])
-    await Promise.all(certs.map(async c => this.driver.sqlWrite('DELETE FROM cindex WHERE issuer = ? AND receiver = ? AND created_on = ?', [
-        c.issuer,
-        c.receiver,
-        c.created_on
-      ])
-    ))
-  }
-}