diff --git a/xtrn/uberblox/game.js b/xtrn/uberblox/game.js
index 3387f50473a7176dbf9e2347c8fcab2d1382fc71..400b99b73e3d5db03b12da58685e0e9523f7efcc 100644
--- a/xtrn/uberblox/game.js
+++ b/xtrn/uberblox/game.js
@@ -11,15 +11,9 @@ load("graphic.js");
 load("sbbsdefs.js")
 load("funclib.js");
  
-splashStart();
-client.subscribe("uberblox","players");
-client.subscribe("uberblox","alltime");
-
 var oldpass = console.ctrl_key_passthru;
 var data = new GameData();
 
-/* assign callback method to client object */
-client.callback=processUpdates;
 /* cycle client and check for updates */
 function cycle() {
 	client.cycle();
@@ -52,8 +46,9 @@ function gotoxy(x,y)
 	var posy=22-(y*2);
 	console.gotoxy(posx,posy);
 }
-function splashStart()
+function open()
 {
+	client.callback=processUpdates;
 	console.ctrlkey_passthru="+ACGKLOPQRTUVWXYZ";
 	bbs.sys_status|=SS_MOFF;
 	bbs.sys_status|=SS_PAUSEOFF;	
@@ -67,27 +62,29 @@ function splashStart()
 		while(console.inkey(K_NOECHO|K_NOSPIN)==="");
 	}
 	console.clear();
+	client.subscribe("uberblox","players");
+	client.subscribe("uberblox","alltime");
 }
-function splashExit()
+function close()
 {
+	client.unsubscribe("uberblox","players");
+	client.unsubscribe("uberblox","alltime");
+	data.storePlayer();
 	console.ctrlkey_passthru=oldpass;
 	bbs.sys_status&=~SS_MOFF;
 	bbs.sys_status&=~SS_PAUSEOFF;
-	console.clear(ANSI_NORMAL);
+	console.clear();
 	var splash_filename=root + "exit.bin";
-	if(!file_exists(splash_filename)) exit();
-	
-	var splash_size=file_size(splash_filename);
-	splash_size/=2;		
-	splash_size/=80;	
-	var splash=new Graphic(80,splash_size);
-	splash.load(splash_filename);
-	splash.draw();
-	
-	console.gotoxy(1,23);
-	console.center("\1n\1c[\1hPress any key to continue\1n\1c]");
-	while(console.inkey(K_NOECHO|K_NOSPIN)==="");
-	console.clear(ANSI_NORMAL);
+	if(file_exists(splash_filename)) {
+		var splash=new Graphic(80,21);
+		splash.load(splash_filename);
+		splash.draw();
+		
+		console.gotoxy(1,23);
+		console.center("\1n\1c[\1hPress any key to continue\1n\1c]");
+		while(console.inkey(K_NOECHO|K_NOSPIN)==="");
+	}
+	console.clear();
 }
 function blox()
 {
@@ -219,10 +216,12 @@ function blox()
 	}
 	function endGame()
 	{
-		if(data.players[user.alias].score<points) {
-			data.players[user.alias].score=points;
+		if(data.players[user.alias].score == undefined || data.players[user.alias].score < points) {
+			data.players[user.alias].score = points;
 			data.storePlayer();
+			data.allTime();
 		}
+		
 		console.clear();
 		gameend.draw();
 		console.gotoxy(52,5);
@@ -232,7 +231,7 @@ function blox()
 	}
 	function init()
 	{
-		client.write("uberblox","players." + user.alias + ".laston",time(),2);
+		data.players[user.alias].laston = time();
 		logo=new Graphic(18,22);
 		logo.load(root + "blox.bin");
 		lobby=new Graphic(80,23);
@@ -610,6 +609,9 @@ function GameData()
 	this.storePlayer=function()
 	{
 		client.write("uberblox","players." + user.alias,this.players[user.alias],2);
+	}
+	this.allTime=function() 
+	{
 		client.lock("uberblox","alltime",2);
 		if(this.players[user.alias].score > this.alltime.score) {
 			this.alltime=client.read("uberblox","alltime");
@@ -661,7 +663,6 @@ function Tile(bg,fg)
 	}
 }
 
+open();
 blox();
-client.unsubscribe("uberblox","players");
-client.unsubscribe("uberblox","alltime");
-splashExit();
+close();