anchor.diff:                  JsonConvert.DeserializeObject<ConcurrentDictionary<string, string>>(File.ReadAllText(keyValPath))
               else
                   new ConcurrentDictionary<string, string>()
  +        
  +        let mutable disposed = false;
  +        let cleanup(disposing:bool) = 
  +            if not disposed then
  +                disposed <- true
  +            if disposing then
  +                sub.Dispose()
  +        
  +        override self.Finalize() = 
  +            cleanup(false)
   
  +        interface IDisposable with
  +            member this.Dispose() =
  +                cleanup(true)
  +                GC.SuppressFinalize(this)
  +        
           interface Interface.IKeyValueStore with 
               member this.GetIndexSetting value =
                   match indexDict.TryGetValue(value) with
  
positive.code: open System.Linq
  open Newtonsoft.Json
  open System.IO
  
  module Store =
      type WriteMsg = WriteMsg of bool * string
      let indexPath = Constants.ConfFolder.Value + "\index.config"
      let keyValPath = Constants.ConfFolder.Value + "\keys.config"
  
      let writingAgent =
          MailboxProcessor.Start(fun inbox ->
              let rec loop n =                                
                  async { 
                      let! msg = inbox.Receive()
                      match msg with
                      | WriteMsg(isIndex, value) ->
                          if isIndex then
                              File.WriteAllText(indexPath, value)
                          else
                              File.WriteAllText(keyValPath, value)
  
                      return! loop n 
                      }
              loop 0)
  
      type KeyValueStore() =
          let indexDict = 
              if File.Exists(indexPath) then
                  JsonConvert.DeserializeObject<ConcurrentDictionary<string, Index>>(File.ReadAllText(indexPath))
  
negative.code:           
              member this.DeleteIndexSetting value =
                  indexDict.TryRemove(value) |> ignore
                  store.OnNext(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
                                  
              member this.UpdateIndexSetting value =
                  match indexDict.TryGetValue(value.IndexName) with
                  | (true, a) -> 
                      indexDict.TryUpdate(value.IndexName, value, a) |> ignore
                      store.OnNext(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
                  | _ -> 
                      indexDict.TryAdd(value.IndexName, value) |> ignore
                      store.OnNext(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
                  
              member this.GetAllIndexSettings() =
                  indexDict.Values.ToList()
  