diff --git a/src/modules/stations.ts b/src/modules/stations.ts
index 1759da6..b3b3819 100644
--- a/src/modules/stations.ts
+++ b/src/modules/stations.ts
@@ -13,7 +13,7 @@ export class StationsModule {
             const stats = await SteamUtil.getPlayerStats(player.steamid);
             const date = new Date();
             if (stats) {
-                const time = (date.getTime() - joinedAt) ?? 0;
+                const time = joinedAt ? (date.getTime() - joinedAt) : 0;
 
                 const userProfile = await MProfile.findOne({ steam: player.steamid }) ?? await MProfile.create({ steam: player.steamid, id: v4(), steamName: player.personaname });
                 if (!userProfile.dispatcherStats) userProfile.dispatcherStats = {};
diff --git a/src/modules/trains.ts b/src/modules/trains.ts
index fdf6731..73a127d 100644
--- a/src/modules/trains.ts
+++ b/src/modules/trains.ts
@@ -12,7 +12,7 @@ export class TrainsModule {
 
         client.on(SimrailClientEvents.TrainLeft, async (server: Server, train: Train, player: IPlayer, joinedAt: number, leftAt: number, points: number, distance: number, vehicle: string) => {
             if (distance) {
-                const time = (leftAt - joinedAt) ?? 0;
+                const time = joinedAt ? (leftAt - joinedAt) : 0;
                 const userProfile = await MProfile.findOne({ steam: player.steamid }) ?? await MProfile.create({ steam: player.steamid, id: v4(), steamName: player.personaname });
 
                 const vehicleName = getVehicle(vehicle) ?? vehicle;
diff --git a/src/util/SimrailClient.ts b/src/util/SimrailClient.ts
index f111d17..b9c51ae 100644
--- a/src/util/SimrailClient.ts
+++ b/src/util/SimrailClient.ts
@@ -50,25 +50,41 @@ export class SimrailClient extends EventEmitter {
 
     public getStation(server: Server['ServerCode'], name: string) {
         if (!this.stationsOccupied[server] || !this.stationsOccupied[server][name]) return null;
-        const player = PlayerUtil.getPlayer(this.stationsOccupied[server][name].SteamId);
+        const player = PlayerUtil.getPlayer(this.stationsOccupied[server][name]?.SteamId ?? "");
         return { player, joinedAt: this.stationsOccupied[name].joinedAt };
     }
 
     public getTrain(server: Server['ServerCode'], name: string) {
         if (!this.trainsOccupied[server] || !this.trainsOccupied[server][name]) return null;
-        const player = PlayerUtil.getPlayer(this.trainsOccupied[server][name].SteamId);
-        return { player, joinedAt: this.trainsOccupied[server][name].JoinedAt, startPlayerDistance: this.trainsOccupied[server][name].StartPlayerDistance };
+        const player = PlayerUtil.getPlayer(this.trainsOccupied[server][name]?.SteamId ?? "");
+        return { player, joinedAt: this.trainsOccupied[server][name]?.JoinedAt, startPlayerDistance: this.trainsOccupied[server][name]?.StartPlayerDistance };
     }
 
-
     private async setup() {
+        console.log(Date.now() - (Number(await redis.get('last_updated'))));
+        if (!await redis.get('last_updated')) {
+            await redis.json.set('trains_occupied', '$', {});
+            await redis.json.set('trains', '$', []);
+            await redis.json.set('stations', '$', []);
+            await redis.json.set('stations_occupied', '$', {});
+        }
+
+        const lastUpdated = Date.now() - (Number(await redis.get('last_updated')) ?? 0);
+
+        if (lastUpdated > 300_000) {
+            console.log('REDIS: last updated more than > 5 mins');
+            await redis.json.set('trains_occupied', '$', {});
+            await redis.json.set('trains', '$', []);
+            await redis.json.set('stations', '$', []);
+            await redis.json.set('stations_occupied', '$', {});
+        }
+
         if (!await redis.json.get('stations'))
             redis.json.set('stations', '$', []);
         if (!await redis.json.get('trains'))
             redis.json.set('trains', '$', []);
         if (!await redis.json.get('trains_occupied'))
             redis.json.set('trains_occupied', '$', {});
-
         if (!await redis.json.get('stations_occupied'))
             redis.json.set('stations_occupied', '$', {});
 
@@ -76,6 +92,8 @@ export class SimrailClient extends EventEmitter {
         this.stationsOccupied = (await redis.json.get('stations_occupied') as unknown as SimrailClient['stationsOccupied']);
         this.trains = (await redis.json.get('trains') as unknown as SimrailClient['trains']);
         this.trainsOccupied = (await redis.json.get('trains_occupied') as unknown as SimrailClient['trainsOccupied']);
+
+        redis.set('last_updated', Date.now().toString());
     }
 
     private async processStation(server: Server, stations: ApiResponse<Station>) {
@@ -86,7 +104,7 @@ export class SimrailClient extends EventEmitter {
             if (!this.stations[server.ServerCode].length) {
                 this.stations[server.ServerCode] = stations.data;
                 redis.json.set('stations', '$', this.stations);
-
+                redis.set('last_updated', Date.now().toString());
             }
 
             stations.data.forEach(async (x) => {
@@ -116,9 +134,9 @@ export class SimrailClient extends EventEmitter {
                 }
             })
             redis.json.set('stations_occupied', '$', this.stationsOccupied);
-
             this.stations[server.ServerCode] = stations.data;
             redis.json.set('stations', '$', this.stations);
+            redis.set('last_updated', Date.now().toString());
         }
     }
 
@@ -131,6 +149,7 @@ export class SimrailClient extends EventEmitter {
                 this.trains[server.ServerCode] = trains.data;
 
                 redis.json.set('trains', '$', this.trains);
+                redis.set('last_updated', Date.now().toString());
                 return;
             }
 
@@ -194,6 +213,7 @@ export class SimrailClient extends EventEmitter {
             this.trains[server.ServerCode] = trains.data;
             redis.json.set('trains', '$', this.trains);
             redis.json.set('trains_occupied', '$', this.trainsOccupied);
+            redis.set('last_updated', Date.now().toString());
         }
     }
 
@@ -211,9 +231,6 @@ export class SimrailClient extends EventEmitter {
 
             this.processStation(server, stations);
             this.processTrain(server, trains);
-
-
-
         });
     }
 } 
\ No newline at end of file