diff --git a/src/app/components/chart-timeline/chart-timeline.component.ts b/src/app/components/chart-timeline/chart-timeline.component.ts
index 3f56f04e71367a17c3b62085912fba670373e9ae..4646dc40f611758033acb3c737a2ea012c8e5fc0 100644
--- a/src/app/components/chart-timeline/chart-timeline.component.ts
+++ b/src/app/components/chart-timeline/chart-timeline.component.ts
@@ -17,7 +17,7 @@ import {
 } from 'ng-apexcharts';
 
 import { getMarkerConfig } from 'src/environments/environment';
-import { Object, PositionUpdate, validateTypeObject} from 'src/app/model/base-model';
+import { Agent, PositionUpdate, validateTypeAgent} from 'src/app/model/base-model';
 
 export type ChartOptions = {
   series: ApexAxisChartSeries;
@@ -76,7 +76,7 @@ export class ChartTimelineComponent implements OnInit {
       try {
         let upd: PositionUpdate = JSON.parse(message.payload.toString())
         upd.objects.forEach(obj => {
-          validateTypeObject(obj)
+          validateTypeAgent(obj)
           this.addNewSeries(obj)
         });
       } catch(e) {
@@ -89,7 +89,7 @@ export class ChartTimelineComponent implements OnInit {
   ngOnInit(): void {
   }
 
-  addNewSeries(obj: Object) {
+  addNewSeries(obj: Agent) {
     // --- Get index of the agent in series
     let name = obj.id
     let idx = this.chartOptions.series.findIndex((s: { name: string; }) => s.name === name) 
@@ -104,7 +104,7 @@ export class ChartTimelineComponent implements OnInit {
     //   this.chartOptions.series[idx]["color"] = markerConf?.circle
     // }
     var markerConf = getMarkerConfig(idx+1) // 0 is root
-    this.chartOptions.series[idx]["color"] = markerConf?.circle
+    this.chartOptions.series[idx]["color"] = markerConf?.color
 
     // --- Add new data
     obj.zoneDescriptors.forEach(zone => {
@@ -116,8 +116,8 @@ export class ChartTimelineComponent implements OnInit {
             new Date(obj.lastPosUpdate).getTime(),
             new Date(obj.lastPosUpdate).getTime() + 1000
           ],
-          "fillColor": markerConf?.circle,
-          "strokeColor": markerConf?.circle
+          "fillColor": markerConf?.color,
+          "strokeColor": markerConf?.color
         }
         this.chartOptions.series[idx]["data"].push(patch)
 
@@ -130,8 +130,8 @@ export class ChartTimelineComponent implements OnInit {
             oldData['y'][0],
             new Date(obj.lastPosUpdate).getTime()
           ],
-          "fillColor": markerConf?.circle,
-          "strokeColor": markerConf?.circle
+          "fillColor": markerConf?.color,
+          "strokeColor": markerConf?.color
         }
         this.chartOptions.series[idx]["data"].push(patch)
       }
diff --git a/src/app/components/map/map.component.ts b/src/app/components/map/map.component.ts
index 9b604089d7cdce84c00b57e951da815ed34a63bb..681229f7a30c458b3afc94f1a6d4f7c5e2f341c5 100644
--- a/src/app/components/map/map.component.ts
+++ b/src/app/components/map/map.component.ts
@@ -6,7 +6,7 @@ import 'leaflet-arrowheads';
 import { IMqttMessage, MqttService } from 'ngx-mqtt';
 
 import { environment, getMarkerConfig} from 'src/environments/environment';
-import {Position, PositionUpdate, RelativePos, WGS84, validateTypePosition, validateTypeObject} from 'src/app/model/base-model';
+import {Position, PositionUpdate, RelativePos, WGS84, validateTypePosition, validateTypeAgent} from 'src/app/model/base-model';
 
 
 @Component({
@@ -46,7 +46,7 @@ export class MapComponent implements OnInit {
         let upd: PositionUpdate = <PositionUpdate>JSON.parse(message.payload.toString())
         
         upd.objects.forEach(obj => {
-          validateTypeObject(obj)
+          validateTypeAgent(obj)
           this.registerPoint(obj.id, obj)
         });
       } catch(e) {
@@ -73,14 +73,15 @@ export class MapComponent implements OnInit {
   registerPoint(key: string, desc: { [key: string]: any }) {
     // --- Leyers for markers
     if (key in this.markOverlays) {
+      console.log(this.markOverlays)
       this.markOverlays[key].clearLayers();
     } else {
       this.markOverlays[key] = L.layerGroup().addTo(<L.Map>this.map)
     }
 
     // --- Info
-    let pos = desc["position"]
     this.agentsInfo[key] = desc
+    let pos = desc["position"]
 
     var props = undefined
     if (desc.extractedAttributes) {
@@ -101,7 +102,7 @@ export class MapComponent implements OnInit {
 
     // empty position
     if (pos==undefined) {
-      console.log("Eroro: empty position.")
+      console.log("Error: empty position.")
       return
     }
 
@@ -109,7 +110,7 @@ export class MapComponent implements OnInit {
 
     // empty point
     if (Object.values(point).every((e)=>{e==undefined})) {
-      console.log("Eroro: empty point.")
+      console.log("Error: empty point.")
       return;
     }
 
@@ -119,55 +120,65 @@ export class MapComponent implements OnInit {
       var globPos = L.latLng([point.latitude, point.longitude]);
     }
  
-    // --- Marker
-    let serialNum = Object.keys(this.markOverlays).length - 1 // because this point already exists
-    console.log(this.markOverlays)
-    console.log("serialNum ", serialNum)
-    var markerConf = getMarkerConfig(serialNum)
-
-    // if (key in MarkerColorMap) {
-    //   var markerConf = MarkerColorMap[key]
-    // } else {
-    //   var markerConf = MarkerColorMap['Default']
-    // }
+    if (key=="ROOT") {
+      // Root Marker
+      let marker = L.marker(globPos, {
+        icon: L.icon({
+          iconSize: [40, 40],
+          iconAnchor: [21, 25],
+          iconUrl: `assets/marker-ball-pink.png`,
+          className: 'true-position-marker'
+        })
+      }).bindPopup(popup).openPopup();
+      marker.addTo(this.markOverlays[key])
       
-    let marker = L.marker(globPos, {
-      icon: L.icon({
-        iconSize: [25, 41],
-        iconAnchor: [13, 41],
-        iconUrl: `assets/marker-icon-${markerConf.marker}.png`,
-        iconRetinaUrl: `assets/marker-icon-2x-${markerConf.marker}.png`,
-        shadowUrl: 'assets/marker-shadow.png',
-        className: 'true-position-marker'
-      })
-    }).bindPopup(popup).openPopup();
-    marker.addTo(this.markOverlays[key])
-
-    // --- Accuracy
-    if (pos?.accuracy) {
-      L.circle(globPos, pos.accuracy, { color: markerConf.circle}
-      ).addTo(this.markOverlays[key]);
-    }
-
-    // --- Orientation
-    if ('x' in point) {
-      let orient: RelativePos = {
-        "x": point.x + (theta ? Math.cos(theta)*3.5 : 3.5), 
-        "y": point.y + (theta ? Math.sin(theta)*3.5 : 0),
-        "z": point.z
+    } else {
+      // --- Marker config
+      let serialNum = Object.keys(this.markOverlays).indexOf(key)
+      // if (serialNum == 0 && Object.keys(this.markOverlays).length > 1) {
+      //   serialNum = 1
+      // }
+      var markerConf = getMarkerConfig(serialNum)
+
+      let marker = L.marker(globPos, {
+        icon: L.icon({
+          iconSize: [25, 41],
+          iconAnchor: [13, 41],
+          iconUrl: `assets/marker-icon-${markerConf.marker}.png`,
+          iconRetinaUrl: `assets/marker-icon-2x-${markerConf.marker}.png`,
+          shadowUrl: 'assets/marker-shadow.png',
+          className: 'true-position-marker'
+        })
+      }).bindPopup(popup).openPopup();
+      marker.addTo(this.markOverlays[key])
+
+      // --- Accuracy
+      if (pos?.accuracy) {
+        L.circle(globPos, pos.accuracy, { color: markerConf.color}
+        ).addTo(this.markOverlays[key]);
       }
-      let globPointOrient = this.ref2root(orient)
 
-      // add arrow
-      var arrow = L.polyline([globPos, globPointOrient], {color: 'grey'}).arrowheads(
-        {
-          fill: true,
-          color: 'grey'
+      // --- Orientation
+      if ('x' in point) {
+        let orient: RelativePos = {
+          "x": point.x + (theta ? Math.cos(theta)*3.5 : 3.5), 
+          "y": point.y + (theta ? Math.sin(theta)*3.5 : 0),
+          "z": point.z
         }
-      );
-      arrow.addTo(this.markOverlays[key])
+        let globPointOrient = this.ref2root(orient)
+
+        // add arrow
+        var arrow = L.polyline([globPos, globPointOrient], {color: markerConf.color}).arrowheads(
+          {
+            fill: true,
+            color: markerConf.color
+          }
+        );
+        arrow.addTo(this.markOverlays[key])
 
+      }
     }
+  
   }
 
   // @https://asymmetrik.com/ngx-leaflet-tutorial-angular-cli/
diff --git a/src/app/components/table/table.component.html b/src/app/components/table/table.component.html
index f10305d874d02f96aedda91c916138fded2f7b10..12d2ce2aa045ebb792aa97082daae0c05c5b995d 100644
--- a/src/app/components/table/table.component.html
+++ b/src/app/components/table/table.component.html
@@ -6,10 +6,10 @@
             <th mat-header-cell *matHeaderCellDef>
                 <mat-icon aria-hidden="false" aria-label="Agent">people</mat-icon> Agent
             </th>
-            <td mat-cell *matCellDef="let element"> {{element.id}} </td>
+            <td mat-cell *matCellDef="let element"><span [ngStyle]="{'color': element.color}">⬤</span> {{element.id}} </td>
         </ng-container>
 
-        <!-- Type -->
+        <!-- Type --> 
         <ng-container matColumnDef="type">
             <th mat-header-cell *matHeaderCellDef>
                 <mat-icon aria-hidden="false" aria-label="Type">style</mat-icon> Type
diff --git a/src/app/components/table/table.component.ts b/src/app/components/table/table.component.ts
index 0bebc46f88b523dbfc52eab4faec99bd21b6337d..0fa9088e0ac352f281532fb2d5540a8855b359e4 100644
--- a/src/app/components/table/table.component.ts
+++ b/src/app/components/table/table.component.ts
@@ -1,10 +1,11 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
-import {PositionUpdate, validateTypeObject} from 'src/app/model/base-model';
+import {Agent, PositionUpdate} from 'src/app/model/base-model';
 
 import { IMqttMessage, MqttService } from 'ngx-mqtt';
 import { Subscription } from 'rxjs';
 import { MatTable } from '@angular/material/table';
 
+import { getMarkerConfig} from 'src/environments/environment';
 
 @Component({
   selector: 'app-table',
@@ -39,10 +40,19 @@ export class TableComponent implements OnInit {
         let upd: PositionUpdate = JSON.parse(message.payload.toString())
         // upd.objects.forEach(obj => validateTypeObject(obj));
         this.dataSource.push(...upd.objects);
+
+        let agentNames = [...new Set(this.dataSource.map((agent: any) => agent.id))]
+        this.dataSource.forEach((agent: any)=> {
+          let idx = agentNames.indexOf(agent.id) + 1
+          agent.color = getMarkerConfig(idx).color
+        })
+
         this.table?.renderRows();
       } catch(e) {
           console.log(e)
       }
+
+      // console.log(this.dataSource)
     });
   }
 
diff --git a/src/app/model/base-model.ts b/src/app/model/base-model.ts
index 475efd81c4e2196a7fc3ae78bd67f11111020894..32c8dc7502bd510a3719554ae9f8c9a1e184b369 100644
--- a/src/app/model/base-model.ts
+++ b/src/app/model/base-model.ts
@@ -1,10 +1,10 @@
    
 export interface PositionUpdate {
-    objects: Object[]
+    objects: Agent[]
     type: NotificationType
 }
 
-export interface Object {
+export interface Agent {
     id: string
     sensorId: string
     type: ObjectType
@@ -77,9 +77,9 @@ export function validateTypePosition(obj: any) {
     }
 }
   
-export function validateTypeObject(obj: any) {
-    if (!isObject(obj)) {
-        throw new TypeError("Unvalid Object: " + Object.keys(obj))  
+export function validateTypeAgent(obj: any) {
+    if (!isAgent(obj)) {
+        throw new TypeError("Unvalid Agent: " + Object.keys(obj))  
     }
 }
 
@@ -101,7 +101,7 @@ export function isPosition(obj: any): obj is Position {
     && Object.prototype.hasOwnProperty.call(obj, "refSystemId")
 } 
 
-export function isObject(obj: any): obj is Object {
+export function isAgent(obj: any): obj is Agent {
     return "id" in obj
         && "type" in obj
         && "sensorId" in obj
diff --git a/src/assets/marker-ball-pink.png b/src/assets/marker-ball-pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ce051e9ab53c03828c27e20e372dd91ef37a258
Binary files /dev/null and b/src/assets/marker-ball-pink.png differ
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 373238d981e51c79a2b42b974c2f4c4c6f7bc2f7..6ef5e65179b037b8451466b494f6017176cd9ff5 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -36,26 +36,30 @@ export const MQTTconfig: IMqttServiceOptions = {
 // };
 
 export const MarkerColorList: MarkerColor[]  = [
-  {"marker": "red", "circle": "#d32f2f"},
-  {"marker": "green", "circle": "#008632"},
-  {"marker": "blue", "circle": "#0076EE"},
-  {"marker": "violet", "circle": "#9700ee"},
-  {"marker": "yellow", "circle": "#eee600"},
-  {"marker": "grey", "circle": "#606060"},
+  {"marker": "red", "color": "#d32f2f"},
+  {"marker": "green", "color": "#008632"},
+  {"marker": "blue", "color": "#0076EE"},
+  {"marker": "violet", "color": "#9700ee"},
+  {"marker": "yellow", "color": "#eee600"},
+  {"marker": "grey", "color": "#606060"},
 ]
 
 interface MarkerColor {
   marker: string
-  circle: string
+  color: string 
 }
 
 export function getMarkerConfig(counter: number) {
-  let idx = counter
+
+  if (counter < 0) {
+    counter = 0
+  }
 
   if (MarkerColorList.length <= counter) {
-    idx = counter - MarkerColorList.length
+    counter = counter - MarkerColorList.length
   }
-  return MarkerColorList[idx]
+
+  return MarkerColorList[counter]
 }
 
 /*