 			
 			// quit if a frame hasn't passed
 			if (_delta < _rate) return;
-			
-			// swap buffers
-			FP.screen.swap();
 			
 			// update the game
 			if (_delta > _skip) _delta = _skip;

			if (FP.elapsed > MAX_ELAPSED) FP.elapsed = MAX_ELAPSED;
			FP.elapsed *= FP.rate;
			
			// swap buffers
			FP.screen.swap();
			
			// update loop
			update();
			
			// update entity lists
			FP._world.updateLists();
			
			// update input
			Input.update();
			
			// switch worlds
			if (FP._goto) switchWorld();
			
			// reset drawing target
			Draw.resetTarget();

				// switch worlds
				if (FP._goto) switchWorld();
			}
			
			// swap buffers
			FP.screen.swap();
			
			// reset drawing target
			Draw.resetTarget();
