diff --git a/src/app/components/chart-timeline/chart-timeline.component.ts b/src/app/components/chart-timeline/chart-timeline.component.ts
index 8398863bada94f0089ea90be10dd1c2cbf22fa7a..57cab727fe5128ad8e9d2027456def7d49bf4c52 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 { MarkerColorMap } from 'src/environments/environment';
-import {NotificationType, Object, PositionUpdate} from 'src/app/model/base-model';
+import {NotificationType, Object, PositionUpdate, validateTypeObject} from 'src/app/model/base-model';
 
 export type ChartOptions = {
   series: ApexAxisChartSeries;
@@ -73,8 +73,15 @@ export class ChartTimelineComponent implements OnInit {
 
 
     this.subsPosition = this._mqttService.observe('ipos/client/position').subscribe((message: IMqttMessage) => {
-      let upd: PositionUpdate = JSON.parse(message.payload.toString())
-      upd.objects.forEach(obj => this.addNewSeries(obj))
+      try {
+        let upd: PositionUpdate = JSON.parse(message.payload.toString())
+        upd.objects.forEach(obj => {
+          validateTypeObject(obj)
+          this.addNewSeries(obj)
+        });
+      } catch(e) {
+          console.log(e)
+      }
     });
 
   }
diff --git a/src/app/components/map/map.component.ts b/src/app/components/map/map.component.ts
index 185aea6df097cc105a1e54d8ae65322a58729c1b..01c3e68474b4a1fd584c420c7f3cc0b1eef68d5b 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, MarkerColorMap } from 'src/environments/environment';
-import {Position, PositionUpdate, RelativePos, WGS84} from 'src/app/model/base-model';
+import {Position, PositionUpdate, RelativePos, WGS84, validateTypePosition, validateTypeObject} from 'src/app/model/base-model';
 
 
 @Component({
@@ -31,9 +31,11 @@ export class MapComponent implements OnInit {
 
     this.subsRoot = this._mqttService.observe('ipos/client/root').subscribe((message: IMqttMessage) => {
       try {
-        this.root = JSON.parse(message.payload.toString())
-        console.log("New root: ", this.root)
-        this.registerPoint("ROOT", {"position": this.root})
+        let root = <Position>JSON.parse(message.payload.toString())
+        validateTypePosition(root)
+        console.log("New root: ", root)
+        this.registerPoint("ROOT", {"position": root})
+        this.root = root
       } catch(e) {
           console.log(e)
       }
@@ -41,8 +43,12 @@ export class MapComponent implements OnInit {
 
     this.subsPosition = this._mqttService.observe('ipos/client/position').subscribe((message: IMqttMessage) => {
       try {
-        let upd: PositionUpdate = JSON.parse(message.payload.toString())
-        upd.objects.forEach(obj => this.registerPoint(obj.id, obj));
+        let upd: PositionUpdate = <PositionUpdate>JSON.parse(message.payload.toString())
+        
+        upd.objects.forEach(obj => {
+          validateTypeObject(obj)
+          this.registerPoint(obj.id, obj)
+        });
       } catch(e) {
           console.log(e)
       }
@@ -143,10 +149,10 @@ export class MapComponent implements OnInit {
     }
 
     // --- Orientation
-    if (theta && 'x' in point) {
+    if ('x' in point) {
       let orient: RelativePos = {
-        "x": point.x + Math.sin(theta) * 3 ?? 3, 
-        "y": point.y + Math.cos(theta) * 3 ?? 3,
+        "x": point.x + (theta ? Math.sin(theta)*3 : 0), 
+        "y": point.y + (theta ? Math.cos(theta)*3 : 3.5),
         "z": point.z
       }
       let globPointOrient = this.ref2root(orient)
diff --git a/src/app/components/table/table.component.ts b/src/app/components/table/table.component.ts
index 9d71cab3dfff2ced23af4134939bd78c30851874..b0b48449d226fc09eb862a217ecfada5827a5208 100644
--- a/src/app/components/table/table.component.ts
+++ b/src/app/components/table/table.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
-import {PositionUpdate, ZoneDesc} from 'src/app/model/base-model';
+import {PositionUpdate, validateTypeObject} from 'src/app/model/base-model';
 
 import { IMqttMessage, MqttService } from 'ngx-mqtt';
 import { Subscription } from 'rxjs';
@@ -35,10 +35,14 @@ export class TableComponent implements OnInit {
     // this.testMessages.forEach(upd => this.dataSource.push(...upd.objects))
 
     this.subsPosition = this._mqttService.observe('ipos/client/position').subscribe((message: IMqttMessage) => {
-      let upd: PositionUpdate = JSON.parse(message.payload.toString())
-      console.log(upd.objects)
-      this.dataSource.push(...upd.objects);
-      this.table?.renderRows();
+      try {
+        let upd: PositionUpdate = JSON.parse(message.payload.toString())
+        upd.objects.forEach(obj => validateTypeObject(obj));
+        this.dataSource.push(...upd.objects);
+        this.table?.renderRows();
+      } catch(e) {
+          console.log(e)
+      }
     });
   }
 
diff --git a/src/app/model/base-model.ts b/src/app/model/base-model.ts
index 17bd669c56a56581a7d86ca997a5bbc4d9dd565c..681dbd7c95fc5098931087ceb376ba75bd009cc7 100644
--- a/src/app/model/base-model.ts
+++ b/src/app/model/base-model.ts
@@ -71,3 +71,44 @@ interface ExtAttribute {
 } 
 
 
+export function validateTypePosition(obj: any) {
+    if (!isPosition(obj)) {
+        throw new TypeError("Object is not Position")  
+    }
+}
+  
+export function validateTypeObject(obj: any) {
+    if (!isObject(obj)) {
+        console.log(obj)
+        throw new TypeError("Unvalid Object: " + Object.keys(obj))  
+    }
+}
+
+
+// --- Type Guards
+
+function isWGS84(obj: any): obj is WGS84 {
+    return Object.prototype.hasOwnProperty.call(obj, "latitude")
+        && Object.prototype.hasOwnProperty.call(obj, "longitude")
+} 
+
+function isRelativePos(obj: any): obj is RelativePos {
+    return Object.prototype.hasOwnProperty.call(obj, "x")
+        && Object.prototype.hasOwnProperty.call(obj, "y")
+} 
+
+export function isPosition(obj: any): obj is Position {
+    return isWGS84(obj.point) || isRelativePos(obj.point)
+    && Object.prototype.hasOwnProperty.call(obj, "refSystemId")
+} 
+
+export function isObject(obj: any): obj is Object {
+    return "id" in obj
+        && "type" in obj
+        && "sensorId" in obj
+        && "sensorType" in obj
+        && "position" in obj
+        && isPosition(obj.position)
+        && "lastPosUpdate" in obj
+        && "zoneDescriptors" in obj
+} 
\ No newline at end of file