@Override
  public synchronized void initialize() {
    astroSources.clear();
    Log.d("RLP", "RLP this is initialization in Abstract source layer");
    initializeAstroSources(astroSources);

    for (AstronomicalSource astroSource : astroSources) {
      Sources sources = astroSource.initialize();
      textSources.addAll(sources.getLabels());
      imageSources.addAll(sources.getImages());
      pointSources.addAll(sources.getPoints());
      lineSources.addAll(sources.getLines());

      List<String> names = astroSource.getNames();
      if (!names.isEmpty()) {
        GeocentricCoordinates searchLoc = astroSource.getSearchLocation();
        for (String name : names) {
          searchIndex.put(name.toLowerCase(), new SearchResult(name, searchLoc));
          prefixStore.add(name.toLowerCase());
        }
      }
    }

    // update the renderer
    updateLayerForControllerChange();
  }
 @Override
 public Set<String> getObjectNamesMatchingPrefix(String prefix) {
   Log.d(TAG, "Searching planets layer for prefix " + prefix);
   Set<String> results = prefixStore.queryByPrefix(prefix);
   Log.d(TAG, "Got " + results.size() + " results for prefix " + prefix + " in " + getLayerName());
   return results;
 }