diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/kgRegionalFeature/kgRegList/kgReglist.directive.ts b/src/atlasComponents/regionalFeatures/bsFeatures/kgRegionalFeature/kgRegList/kgReglist.directive.ts
index 60e38ee33d056bc7ebecc9ee975e6569228fefd3..9c183003a49de3c208b06a399e2dbc8326cb19a4 100644
--- a/src/atlasComponents/regionalFeatures/bsFeatures/kgRegionalFeature/kgRegList/kgReglist.directive.ts
+++ b/src/atlasComponents/regionalFeatures/bsFeatures/kgRegionalFeature/kgRegList/kgReglist.directive.ts
@@ -1,10 +1,11 @@
-import { Directive, EventEmitter, OnDestroy, Output } from "@angular/core";
+import { Directive, EventEmitter, Inject, OnDestroy, Optional, Output } from "@angular/core";
 import { KG_REGIONAL_FEATURE_KEY, TBSSummary } from "../type";
-import { BsFeatureService } from "../../service";
+import { BsFeatureService, TFeatureCmpInput } from "../../service";
 import { BsRegionInputBase } from "../../bsRegionInputBase";
 import { merge, of, Subscription } from "rxjs";
-import { filter, mapTo, startWith, switchMap, tap } from "rxjs/operators";
+import { catchError, mapTo, startWith, switchMap, tap } from "rxjs/operators";
 import { IRegionalFeatureReadyDirective } from "../../type";
+import { REGISTERED_FEATURE_INJECT_DATA } from "../../constants";
 
 @Directive({
   selector: '[kg-regional-features-list-directive]',
@@ -14,21 +15,27 @@ import { IRegionalFeatureReadyDirective } from "../../type";
 export class KgRegionalFeaturesListDirective extends BsRegionInputBase implements IRegionalFeatureReadyDirective, OnDestroy {
   public kgRegionalFeatures: TBSSummary[] = []
   public kgRegionalFeatures$ = this.region$.pipe(
-    filter(v => !!v),
     // must not use switchmapto here
     switchMap(() => {
       this.busyEmitter.emit(true)
-      return this.getFeatureInstancesList(KG_REGIONAL_FEATURE_KEY).pipe(
-        tap(() => {
-          this.busyEmitter.emit(false)
-        })
+      return merge(
+        of([]),
+        this.getFeatureInstancesList(KG_REGIONAL_FEATURE_KEY).pipe(
+          catchError(() => of([])),
+          tap(() => {
+            this.busyEmitter.emit(false)
+          }),
+        )
       )
     }),
     startWith([])
   )
   
-  constructor(svc: BsFeatureService){
-    super(svc)
+  constructor(
+    svc: BsFeatureService,
+    @Optional() @Inject(REGISTERED_FEATURE_INJECT_DATA) data: TFeatureCmpInput,  
+  ){
+    super(svc, data)
     this.sub.push(
       this.kgRegionalFeatures$.subscribe(val => {
         this.kgRegionalFeatures = val
diff --git a/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts b/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts
index 0df3cd98f0519b9cfc0f22d236a9f26b2f13f619..610eb96e615f23690710ab392b4d492059bcb13b 100644
--- a/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts
+++ b/src/atlasComponents/regionalFeatures/bsFeatures/regionalFeatureWrapper/regionalFeatureWrapper.component.ts
@@ -1,8 +1,8 @@
 import { Component, ComponentFactory, ComponentFactoryResolver, Injector, Input, OnChanges, ViewChild, ViewContainerRef } from "@angular/core";
 import { TRegion } from "../type";
-import { BsFeatureService, TFeatureCmpInput, TRegisteredFeature } from "../service";
-import { BehaviorSubject, Observable } from "rxjs";
-import { map } from "rxjs/operators";
+import { BsFeatureService, TFeatureCmpInput } from "../service";
+import { BehaviorSubject, combineLatest, Observable } from "rxjs";
+import { map, scan } from "rxjs/operators";
 import { REGISTERED_FEATURE_INJECT_DATA } from "../constants";
 
 @Component({
@@ -23,13 +23,37 @@ export class RegionalFeatureWrapperCmp implements OnChanges{
 
   private weakmap = new WeakMap<(new () => any),  ComponentFactory<any>>()
 
-  public registeredFeatures$ = this.svc.registeredFeatures$
+  public registeredFeatures$: Observable<{
+    name: string
+    icon: string
+    
+  }[]>
   constructor(
     private svc: BsFeatureService,
     private cfr: ComponentFactoryResolver,
     private injector: Injector,
   ){
-    
+    this.registeredFeatures$ = this.registeredFeatureMasterStream$.pipe(
+      scan((acc, curr) => {
+        return {
+          ...acc,
+          ...curr
+        }
+      }),
+      map(obj => {
+        const returnArr = []
+        for (const name in obj) {
+          if (obj[name].busy || obj[name].results.length === 0) {
+            continue
+          }
+          returnArr.push({
+            name,
+            icon: obj[name].icon
+          })
+        }
+        return returnArr
+      })
+    )
   }
 
   private regionOnDestroyCb: (() => void)[] = []
@@ -37,11 +61,15 @@ export class RegionalFeatureWrapperCmp implements OnChanges{
     if (!this.region) return
     const { region } = this
     for (const feat of this.svc.registeredFeatures){
+      const { name, icon } = feat
       const ctrl = new feat.Ctrl(this.svc, { region })
-      const sub = ctrl.busy$.subscribe(
-        flag => {
-          this.busyMasterStream$.next({
-            [feat.name]: flag
+      const sub = combineLatest([
+        ctrl.busy$,
+        ctrl.results$
+      ]).subscribe(
+        ([busy, results]) => {
+          this.registeredFeatureMasterStream$.next({
+            [name]: { busy, results, icon }
           })
         }
       )
@@ -50,16 +78,20 @@ export class RegionalFeatureWrapperCmp implements OnChanges{
   }
   private cleanUpRegionalFeature(){
     while (this.regionOnDestroyCb.length) this.regionOnDestroyCb.pop()()
-    this.busyMasterStream$.next({})
+    this.registeredFeatureMasterStream$.next({})
   }
 
-  private busyMasterStream$ = new BehaviorSubject<{
-    [key: string]: boolean
+  private registeredFeatureMasterStream$ = new BehaviorSubject<{
+    [key: string]: {
+      icon: string
+      busy: boolean
+      results: any[]
+    }
   }>({})
-  public busy$: Observable<boolean> = this.busyMasterStream$.pipe(
+  public busy$: Observable<boolean> = this.registeredFeatureMasterStream$.pipe(
     map(obj => {
       for (const key in obj) {
-        if(obj[key]) return true
+        if(obj[key].busy) return true
       }
       return false
     }),
@@ -71,8 +103,15 @@ export class RegionalFeatureWrapperCmp implements OnChanges{
   }
 
   public activatedFeatureName: string = null
-  activateFeature(feat: TRegisteredFeature){
-    this.activatedFeatureName = feat.name
+  activateFeature(featNameObj: {
+    name: string
+  }){
+    const feat = this.svc.registeredFeatures.find(f => f.name === featNameObj.name)
+    if (!feat) {
+      console.log(`cannot find feature with name ${featNameObj.name}`)
+      return
+    }
+    this.activatedFeatureName = featNameObj.name
     if (!this.regionalFeatureContainerRef) {
       console.warn(`regionalFeatureContainerRef not defined.`)
       return