With the gaLayersChange event I don't think it makes sense that getOlLayerById and getBackgroundLayers return a promise. The promise could now be private to the gaLayers service. Or loadForTopic could now just returns that promise.