The reason may be that gaLayersPermalinkManager and gaHighlightFeaturePermalinkManager do register listeners. But I think the cases are different. gaLayersPermalinkManager and gaHighlightFeaturePermalinkManager listen to gaLayersChange (once) to be able to create the OpenLayers layers for the layers specified in the permalink. Also, these permalink managers are not bound to a specific components, that's why I decided to implement as independent services, and make the application responsible for enabling them. In the case of catalogNodes I think we can have the catalog component be responsible for the entire thing.