diff --git a/access_node/__main__.py b/access_node/__main__.py
index 16aa09c4e702d0b2de99397f5f73280c0d36d3a7..ce24a4747ad646eeb9ca766f6b0c81b57e35f692 100644
--- a/access_node/__main__.py
+++ b/access_node/__main__.py
@@ -76,19 +76,23 @@ def SetupArborTables(postgres_username, postgres_password, port):
 			FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID),
 			);''')
 
+	cur.execute('''CREATE TABLE ATTRIBUTES (
+      ATTRIBUTE_ID		INT PRIMARY KEY NOT NULL UNIQUE,
+      NAME   					VARCHAR(50) NOT NULL,
+    	);''')
+
 	cur.execute('''CREATE TABLE PROBES (
       PROBE_ID      INT PRIMARY KEY NOT NULL UNIQUE,
       CELL_ID       INT NOT NULL,  
       SEGMENT_ID 		INT NOT NULL,
 			POSITION   		FLOAT,
-			NODE_ID       INT,  
+			ATTRIBUTE_ID	INT NOT NULL,
+			NODE_ID       INT,
       FOREIGN KEY (NODE_ID) REFERENCES ARBOR_SIMULATION_NODES (NODE_ID),
-			FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID));''')
+			FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID),
+			FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTES (ATTRIBUTE_ID));''')
 
-	cur.execute('''CREATE TABLE ATTRIBUTES (
-      ATTRIBUTE_ID		INT PRIMARY KEY NOT NULL UNIQUE,
-      NAME   					VARCHAR(50) NOT NULL,
-    	);''')
+	
 
 	con.commit()
 	con.close()
diff --git a/access_node/controllers/arbor_controller.py b/access_node/controllers/arbor_controller.py
index aa3fe5b4a91017e01b9f0805f6a6fa2b6dea002e..4a74cee84c871a0ae1ad2d987a0b649b4bb5baed 100644
--- a/access_node/controllers/arbor_controller.py
+++ b/access_node/controllers/arbor_controller.py
@@ -157,15 +157,27 @@ def arbor_get_probes(attribute=None):  # noqa: E501
     con = connect_to_database()
     cur = con.cursor()
 
-    # TODO Multiple Attributes per Probe possible? -  Complete this
-
     if attribute == None:
-         cur.execute("SELECT PROBE_ID, CELL_ID, SEGMENT_ID, POSITION FROM PROBES")
-
-
-
+        cur.execute('''SELECT 
+                        PROBES.PROBE_ID, 
+                        PROBES.CELL_ID, 
+                        PROBES.SEGMENT_ID,  
+                        PROBES.POSITION,
+                        FROM PROBES''')
+    else:
+        cur.execute('''SELECT 
+                        PROBES.PROBE_ID, 
+                        PROBES.CELL_ID, 
+                        PROBES.SEGMENT_ID,  
+                        PROBES.POSITION,
+                        FROM PROBES INNER JOIN ATTRIBUTES
+                        ON PROBES.ATTRIBUTE_ID = ATTRIBUTES.ATTRIBUTE_ID
+                        WHERE ATTRIBUTES.NAME = %s''', (attribute,))
+
+    probes = np.array(cur.fetchall())
     con.close()
-    return 
+
+    return  [Probe(*probe) for probe in probes]
 
 
 def arbor_get_simulation_time_info():  # noqa: E501