diff --git a/dash_app/app.py b/dash_app/app.py
index 8c3aa77a621e38c7ed3044a3e2c188216d27ef8a..6f815e9356ef9b456b375a168dee2434903ee26d 100644
--- a/dash_app/app.py
+++ b/dash_app/app.py
@@ -82,10 +82,12 @@ def graph_elements_callback(add_button_ts, remove_button_ts, submit_button_ts, g
 
     if remove_button_ts > add_button_ts:
         if graph_selected is not None:
-            graph.remove_node(graph_selected['label'])
+            selected_word = graph_selected['label']
+            if selected_word in graph.get_all_words() and selected_word != graph.get_base_word():
+                graph.remove_node(graph_selected['label'])
 
     if add_button_ts > remove_button_ts:
-        if add_word is not None and add_word != '':
+        if add_word is not None and add_word != '' and add_word not in graph.get_all_words():
             graph.add_node(add_word)
             graph.add_edge(graph.get_base_word(), add_word)
 
diff --git a/dash_app/graph.py b/dash_app/graph.py
index 951b76fbfa6d4bfc08b2ca10e8aee31487eee499..30e15ecea4f162ee42b9e5870e4fa60c2d66d0ad 100644
--- a/dash_app/graph.py
+++ b/dash_app/graph.py
@@ -12,6 +12,10 @@ class Graph:
     def get_base_word(self):
         return self.associated_words.get_base_word()
 
+    def get_all_words(self):
+        all_words = [node_dict['data']['label'] for node_dict in self.nodes]
+        return all_words
+
     def clear_graph_elements(self):
         self.nodes = []
         self.edges = []
@@ -24,7 +28,7 @@ class Graph:
         base_word = self.associated_words.get_base_word()
         associated_words = self.associated_words.get_associated_words()
         self.clear_graph_elements()
-        self.add_node(base_word)
+        self.add_node(base_word, is_base_node=1)
         self.add_nodes(associated_words)
         self.add_edges(base_word, associated_words)
 
@@ -32,8 +36,11 @@ class Graph:
         for node in nodes:
             self.add_node(node)
 
-    def add_node(self, node):
-        node_dict = {'data': {'id': node, 'label': node}}
+    def add_node(self, node, is_base_node=0):
+        node_dict = {'data': {'id': node, 'label': node, 'is_base_node': is_base_node}}
+        if is_base_node:
+            node_dict['selectable'] = False
+            node_dict['grabbable'] = False
         if node_dict not in self.nodes:
             self.nodes.append(node_dict)
 
@@ -79,4 +86,19 @@ class Graph:
                               elements=elements,
                               userZoomingEnabled=False,
                               userPanningEnabled=False,
+                              stylesheet=[
+                                  {
+                                      'selector': '[is_base_node > 0.5]',
+                                      'style': {
+                                          'label': 'data(label)',
+                                          'background-color': 'green'
+                                      }
+                                  },
+                                  {
+                                      'selector': '[is_base_node < 0.5]',
+                                      'style': {
+                                          'label': 'data(label)',
+                                      }
+                                  }
+                              ]
                               )