anchor.diff:                  CloseIndex(nodeState.IndicesState, index)
                   let! index' = nodeState.PersistanceStore.Get<Index>(indexName)
                   index'.Online <- false
  -                nodeState.PersistanceStore.Put indexName index' |> ignore
  +                nodeState.PersistanceStore.Put(indexName, index') |> ignore
                   logger.CloseIndex(indexName)
                   return! Choice1Of2()
           }
       
       /// <summary>
  +    /// Refresh an index reader
  +    /// Note: There should never be any need to use this directly.
  +    /// </summary>
  +    /// <param name="indexName"></param>
  +    /// <param name="nodeState"></param>
  +    let Refresh indexName = 
  +        maybe { 
  +            let! status = nodeState.IndicesState.GetStatus(indexName)
  +            match status with
  +            | IndexState.Closing | IndexState.Offline -> return! Choice2Of2(MessageConstants.INDEX_IS_ALREADY_OFFLINE)
  +            | _ -> 
  +                let! index = nodeState.IndicesState.GetRegisteration(indexName)
  +                RefreshIndexJob(index)
  +                return! Choice1Of2()
  +        }
  +    
  +    /// <summary>
       /// Commit changes to the disk
       /// </summary>
       /// <param name="indexName"></param>
       /// <param name="nodeState"></param>
  -    let Commit indexName = maybe { let! (flexIndex, documentTemplate) = Index.IndexExists
  -                                                                            (nodeState.IndicesState, indexName)
  -                                   flexIndex.Shards |> Array.iter (fun shard -> shard.IndexWriter.commit()) }
  +    let Commit indexName = 
  +        maybe { 
  +            let! status = nodeState.IndicesState.GetStatus(indexName)
  +            match status with
  +            | IndexState.Closing | IndexState.Offline -> return! Choice2Of2(MessageConstants.INDEX_IS_ALREADY_OFFLINE)
  +            | _ -> 
  +                let! index = nodeState.IndicesState.GetRegisteration(indexName)
  +                CommitJob(index)
  +                return! Choice1Of2()
  +        }
       
       /// <summary>
       /// Load all indices for the node
  
positive.code:             | (true, _) -> return! Choice2Of2(MessageConstants.INDEX_ALREADY_EXISTS)
              | _ -> 
                  let! settings = settingsBuilder.BuildSetting(index)
                  nodeState.PersistanceStore.Put index.IndexName index |> ignore
                  logger.AddIndex(index.IndexName, index)
                  if index.Online then do! AddIndex(nodeState.IndicesState, settings)
                  else do! nodeState.IndicesState.AddStatus(index.IndexName, IndexState.Offline)
  
negative.code: open FlexSearch.Api
  open FlexSearch.Api.Message
  open FlexSearch.Core
  open System.IO
  open System.Linq
  
  /// <summary>
  /// Service wrapper around all index related services
  