anchor.diff:            
               member this.DeleteIndexSetting value =
                   indexDict.TryRemove(value) |> ignore
  -                writingAgent.Post(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
  -                
  +                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
  -                    writingAgent.Post(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
  +                    store.OnNext(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
                   | _ -> 
                       indexDict.TryAdd(value.IndexName, value) |> ignore
  -                    writingAgent.Post(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
  +                    store.OnNext(WriteMsg(true, JsonConvert.SerializeObject(indexDict)))
                   
               member this.GetAllIndexSettings() =
                   indexDict.Values.ToList()
  
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:                 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
  