 			stopButton.setExists(U.state.time.moment > 0);
 			backstepButton.setExists(U.state.time.moment > 0);
 			
-			playButton.setExists((playing != 1) != (ticksPerSec != 2));
+			
+			playButton.setExists(playing != 1);
+			playButton.X = stepButton.X - playButton.fullWidth * (playing == 1 ? 2 : 1);
 			fastButton.setExists(!playButton.exists);
 			
-			rewindButton.setExists(((playing != -1) != (ticksPerSec != 2)) && U.state.time.moment > 0);
+			rewindButton.setExists(playing != -1 && U.state.time.moment > 0);
+			rewindButton.X = backstepButton.X + backstepButton.fullWidth + (playing == -1 ? rewindButton.fullWidth : 0);
 			rFastButton.setExists(!rewindButton.exists && U.state.time.moment > 0);
 			
 			pauseButton.setExists(playing != 0);
+			pauseButton.X = playing == 1 ? playButton.X + playButton.fullWidth : rewindButton.X - pauseButton.fullWidth;
 			
 			derock++;
 		}

				startPlaying();
				derock = 0;
			}, "Play at 10x speed", new Key("N"));
			add(fastButton);
			
			pauseButton = new GraphicButton(playButton.X, playButton.Y, _pause_sprite, function pause():void {

			add(rewindButton);
			rewindButton.exists = false;
			
			rFastButton = new GraphicButton(rewindButton.X + rewindButton.fullWidth, rewindButton.Y, _reverse_fast_sprite, function reverseFast():void {
				if (!derock) return;
				
				ticksPerSec = 20;
