diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts
index ab7d8b8e90524b48116a5759e219889eabc68a21..27dfb2e4f3a1a108b053f2a9403bdc9e3b6df036 100644
--- a/src/app/components/analysis-panel/analysis-panel.component.ts
+++ b/src/app/components/analysis-panel/analysis-panel.component.ts
@@ -200,10 +200,11 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
 
         this.networkHandler.activeNetwork.networkInternal = new vis.Network(container, this.nodeData, options);
 
-        this.tableDrugs = nodes.filter(e => e.drugstoneId && e.drugstoneId.drugstoneType === 'drug');
+        this.tableDrugs = nodes.filter(e => e.drugstoneId && e.drugstoneType === 'drug');
         this.tableDrugs.forEach((r) => {
           r.rawScore = r.score;
         });
+        console.log(this.tableDrugs)
 
         this.tableProteins = nodes.filter(e => e.drugstoneId && e.drugstoneType === 'protein');
         this.tableSelectedProteins = [];
@@ -411,7 +412,6 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
   public createNetwork(result: any): { edges: any[], nodes: any[] } {
     const config = result.parameters.config;
     this.myConfig = config;
-
     const identifier = this.myConfig.identifier;
 
     // add drugGroup and foundNodesGroup for added nodes
@@ -424,24 +424,14 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
     this.effects = [];
     const network = result.network;
 
-    // const nodeTypes = attributes.nodeTypes || {};
-    // const isSeed = attributes.isSeed || {};
-    // const scores = attributes.scores || {};
     const details = attributes.details || {};
     const nodeIdMap = {}
-    // const reverseNodeIdMap = {}
     // @ts-ignore
     Object.entries(details).filter(e => e[1].drugstoneType === 'protein').forEach(e => {
-      // let id =
       // @ts-ignore
-      e[1].drugstoneId.forEach(id=>{
-         nodeIdMap[id] = e[1][identifier][0]
+      e[1].drugstoneId.forEach(id => {
+        nodeIdMap[id] = e[1][identifier][0]
       })
-
-      // if (!nodeIdMap[id])
-      //   nodeIdMap[id] = [e[0]]
-      // else
-      //   nodeIdMap[id].push(e[0])
     })
     for (const nodeId of Object.keys(details)) {
       const nodeDetails = details[nodeId]
@@ -449,7 +439,9 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
       if (nodeDetails.drugstoneId && nodeDetails.drugstoneType === 'protein') {
         // node is protein from database, has been mapped on init to backend protein from backend
         // or was found during analysis
-        nodeDetails.group = result.targetNodes && result.targetNodes.indexOf(nodeId) !== -1 ? 'foundNode' : (nodeDetails.group ? nodeDetails.group : 'default' );
+        // FIXME connectorNodes are not visualized correctly
+        nodeDetails.group = result.targetNodes && result.targetNodes.indexOf(nodeId) !== -1 ? 'foundNode' : (nodeDetails.group ? nodeDetails.group : 'connectorNode');
+        console.log(nodeDetails)
         nodeDetails.label = nodeDetails.label ? nodeDetails.label : nodeDetails[identifier];
         nodeDetails.id = nodeDetails[identifier][0] ? nodeDetails[identifier][0] : nodeDetails.id;
         this.proteins.push(nodeDetails);
@@ -464,17 +456,21 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
       }
       // further analysis and the button function can be used to highlight seeds
       // option to use scores[node] as gradient, but sccores are very small
-      console.log(nodeDetails)
       nodes.push(NetworkSettings.getNodeStyle(nodeDetails as Node, config, false, false, 1))
     }
 
     const edges = [];
+    let uniqEdges = []
 
     for (const edge of network.edges) {
       const e = mapCustomEdge(edge, this.myConfig)
       e.from = e.from[0] === 'p' ? nodeIdMap[e.from] : e.from
       e.to = e.to[0] === 'p' ? nodeIdMap[e.to] : e.to
-      edges.push(e);
+      const hash = e.from + "_" + e.to;
+      if (uniqEdges.indexOf(hash) === -1) {
+        uniqEdges.push(hash);
+        edges.push(e);
+      }
     }
     return {
       nodes,
diff --git a/src/app/components/network/network.component.ts b/src/app/components/network/network.component.ts
index da03306cbe05b84c19298dccc86509ae0e720d70..477c20e551890c696c5e8f93bd9fa1049086c3d9 100644
--- a/src/app/components/network/network.component.ts
+++ b/src/app/components/network/network.component.ts
@@ -426,9 +426,11 @@ export class NetworkComponent implements OnInit {
   }
 
   public hasDrugsLoaded(): boolean {
-    if (this.nodeData == null || this.nodeData.nodes == null)
-      return false;
-    return this.nodeData.nodes.get().filter((node: Node) => node.drugId).map(node => node.drugstoneId).filter(id => id.startsWith('dr')).length > 0;
+    if(this.nodeData && this.nodeData.nodes)
+      for(const node of this.nodeData.nodes.get())
+        if(node.drugstoneType && node.drugstoneId === 'drug')
+          return true;
+    return false;
   }
 
   public setLegendContext() {
@@ -442,9 +444,10 @@ export class NetworkComponent implements OnInit {
       if (this.highlightSeeds) {
         this.legendContext = "drugTargetAndSeeds";
       } else {
-        this.legendContext = 'drugTarget'
+        this.legendContext = 'drugTarget';
       }
     }
+    console.log(this.legendContext)
   }
 
   /**
diff --git a/src/app/config.ts b/src/app/config.ts
index ee9d639de7d92cc517817e78846ca64e170c701c..9e4f473fafd67647773125f53b2d4d4cc98bd76e 100644
--- a/src/app/config.ts
+++ b/src/app/config.ts
@@ -79,6 +79,42 @@ export interface IConfig {
   edgeShadow?: boolean;
 }
 
+
+const defaultNodeGroup: NodeGroup = {
+      // this default group is used for default node group values
+      // and is fallback in case user does not provide any nodeGroup
+      groupName: 'Default Node Group',
+      color: {
+        border: '#FFFF00',
+        background: '#FFFF00',
+        highlight: {
+          border: '#FF0000',
+          background: '#FF0000'
+        },
+      },
+      shape: 'triangle',
+      type: 'default type',
+      detailShowLabel: false,
+      font: {
+        color: '#000000',
+        size: 14,
+        face: 'arial',
+        background: undefined,
+        strokeWidth: 0,
+        strokeColor: '#ffffff',
+        align: 'center',
+        bold: false,
+        ital: false,
+        boldital: false,
+        mono: false,
+      },
+      borderWidth: 1,
+      borderWidthSelected: 2
+    };
+const connectorNodeGroup: NodeGroup = JSON.parse(JSON.stringify(defaultNodeGroup));
+connectorNodeGroup.groupName = 'Connector Node';
+
+// @ts-ignore
 /**
  * Provide default values
  */
@@ -126,37 +162,7 @@ export const defaultConfig: IConfig = {
   nodeGroups: {
     // all NodeGroups but the default group must be set, if not provided by the user, they will be taken from here
     // IMPORTANT: node color must be hexacode!
-    default: {
-      // this default group is used for default node group values
-      // and is fallback in case user does not provide any nodeGroup
-      groupName: 'Default Node Group',
-      color: {
-        border: '#FFFF00',
-        background: '#FFFF00',
-        highlight: {
-          border: '#FF0000',
-          background: '#FF0000'
-        },
-      },
-      shape: 'triangle',
-      type: 'default type',
-      detailShowLabel: false,
-      font: {
-        color: '#000000',
-        size: 14,
-        face: 'arial',
-        background: undefined,
-        strokeWidth: 0,
-        strokeColor: '#ffffff',
-        align: 'center',
-        bold: false,
-        ital: false,
-        boldital: false,
-        mono: false,
-      },
-      borderWidth: 1,
-      borderWidthSelected: 2
-    },
+    default: defaultNodeGroup,
     foundNode: {
       groupName: 'Found Nodes',
       color: {
@@ -170,6 +176,7 @@ export const defaultConfig: IConfig = {
       shape: 'circle',
       type: 'default node type',
     },
+    connectorNode: connectorNodeGroup,
     foundDrug: {
       groupName: 'Drugs',
       color: {
diff --git a/src/index.html b/src/index.html
index 48802835e845f8da9581ebc72c1f9e539e0a61a2..eb8d7e4b0ee463cbd08cf53080ba83b35fdb5428 100644
--- a/src/index.html
+++ b/src/index.html
@@ -93,7 +93,7 @@
   <drugst-one id="netexp1"
                     pluginId="2"
                     config='{"identifier":"symbol","licencedDatasets": false, "interactionDrugProtein":"NeDRex", "physicsOn":true, "showLeftSidebar": true, "showSimpleAnalysis":true, "nodeGroups":{"patient":{"type":"patient","color":"black","font":{"color":"#ffffff"},"groupName":"Patient","shape":"image","image":"https://static.thenounproject.com/png/22780-200.png"},"condition":{"type":"condition","color":"black","font":{"color":"black"},"groupName":"Condition","shape":"text"},"important":{"type":"gene","color":"#ff881f","font":{"color":"#000000"},"groupName":"Important Gene","shape":"star"},"gene":{"type":"gene","color":"#4da300","font":{"color":"#ffffff"},"groupName":"Gene","shape":"circle"},"foundDrug":{"type":"drug","color":{"border":"#F12590","background":"#F12590"},"font":{"color":"#000000"},"groupName":"Drug","shape":"diamond"}},"edgeGroups":{"genotype":{"color":"black","groupName":"Relevant Gene"},"has-condition":{"color":"#ffffff","groupName":"Has Condition","dashes":[2,2]},"default":{"color":"#000000","groupName":"default edge"},"ggi":{"color":"#000000","groupName":"Interaction","dashes":[3,2]}},"title":"Breast cancer example network","nodeShadow":true,"edgeShadow":false,"autofillEdges":true,"showLegend":true}'
-                    network='{"nodes":[{"id":"ATM","label":"ATM","group":"gene","x":289,"y":242},{"id":"BARD1","label":"BARD1","group":"gene","x":44,"y":250},{"id":"BRCA1","label":"BRCA1","group":"gene","x":466,"y":576},{"id":"BRCA2","label":"BRCA2","group":"gene","x":507,"y":285},{"id":"BRIP1","label":"BRIP1","group":"gene","x":54,"y":474},{"id":"CHEK2","label":"CHEK2","group":"gene","x":216,"y":590},{"id":"CDH1","label":"CDH1","group":"gene","x":320,"y":-57},{"id":"NF1","label":"NF1","group":"gene","x":481,"y":111},{"id":"NBN","label":"NBN","group":"gene","x":-57,"y":314},{"id":"PALB2","label":"PALB2","group":"gene","x":450,"y":190},{"id":"PTEN","label":"PTEN","group":"important","x":305,"y":494},{"id":"RAD51C","label":"RAD51C","group":"gene","x":182,"y":-90},{"id":"RAD51D","label":"RAD51D","group":"gene","x":368,"y":73},{"id":"STK11","label":"STK11","group":"gene","x":686,"y":330},{"id":"TP53","label":"TP53","group":"important","x":333,"y":316}],"edges":[]}'>
+                    network='{"nodes":[{"id":"ATM","label":"ATM","group":"gene","x":289,"y":242},{"id":"FOXP2","label":"FOXP2","group":"gene"},{"id":"BARD1","label":"BARD1","group":"gene","x":44,"y":250},{"id":"BRCA1","label":"BRCA1","group":"gene","x":466,"y":576},{"id":"BRCA2","label":"BRCA2","group":"gene","x":507,"y":285},{"id":"BRIP1","label":"BRIP1","group":"gene","x":54,"y":474},{"id":"CHEK2","label":"CHEK2","group":"gene","x":216,"y":590},{"id":"CDH1","label":"CDH1","group":"gene","x":320,"y":-57},{"id":"NF1","label":"NF1","group":"gene","x":481,"y":111},{"id":"NBN","label":"NBN","group":"gene","x":-57,"y":314},{"id":"PALB2","label":"PALB2","group":"gene","x":450,"y":190},{"id":"PTEN","label":"PTEN","group":"important","x":305,"y":494},{"id":"RAD51C","label":"RAD51C","group":"gene","x":182,"y":-90},{"id":"RAD51D","label":"RAD51D","group":"gene","x":368,"y":73},{"id":"STK11","label":"STK11","group":"gene","x":686,"y":330},{"id":"TP53","label":"TP53","group":"important","x":333,"y":316}],"edges":[]}'>
   </drugst-one>
 <!--  ENSEMBL test-->
 <!--    <drugst-one id="netexp1"-->