Ah I see. I'm not used to think about visibility issues! :) 

Making them volatile would take of the visibility issues right? But I might want to fix it in another way. These three instance should really be vals as we don't expect them to change, but currently we can't make them vals as the `start` methods needs to be invoked before `getStateLocation()` can be used. So we could do something like this

    @volatile var config = _
    // later
    config = {
      val indexLocation = ...
      val index = ...
      val indexer = ..
    }

Various components depend on the index, indexer etc. and currently we deal with this by passing the instances along as constructor parameters. I feel like there must be a better way