diff --git a/bin/RabiClone.jar b/bin/RabiClone.jar
index 96cf330..7f872cd 100644
Binary files a/bin/RabiClone.jar and b/bin/RabiClone.jar differ
diff --git a/src/sig/RabiClone.java b/src/sig/RabiClone.java
index 8f3ff4c..2936810 100644
--- a/src/sig/RabiClone.java
+++ b/src/sig/RabiClone.java
@@ -84,48 +84,55 @@ public class RabiClone{
 		p.render();
 
 		long lastGameTime = System.nanoTime();
+		long dt = 0;
 
 		CONTROLLERS = ControllerEnvironment.getDefaultEnvironment().getControllers();
 		while (true) {
-			long timePassed = System.nanoTime()-lastGameTime;
+			dt += System.nanoTime()-lastGameTime;
 			lastGameTime=System.nanoTime();
-			double updateMult = Math.min(1/120d,timePassed/1000000000d);
 
 
-			handleGameControllers();
+			while (dt>=(1/244d)*1000000000) {
+				double updateMult = 1/244d;
+				handleGameControllers();
 
-			KeyBind.poll();
+				KeyBind.poll();
 
-			if (Key.isKeyHeld(KeyEvent.VK_F1)) {
-				if (level_renderer instanceof EditorRenderer) {
-					OBJ.remove(level_renderer);
-					OBJ.add(level_renderer=new LevelRenderer(p));
-					StartGame();
+				if (Key.isKeyHeld(KeyEvent.VK_F1)) {
+					if (level_renderer instanceof EditorRenderer) {
+						OBJ.remove(level_renderer);
+						OBJ.add(level_renderer=new LevelRenderer(p));
+						StartGame();
+					}
 				}
-			}
-			if (Key.isKeyHeld(KeyEvent.VK_F2)) {
-				if (!(level_renderer instanceof EditorRenderer)) {
+				if (Key.isKeyHeld(KeyEvent.VK_F2)) {
+					if (!(level_renderer instanceof EditorRenderer)) {
+						OBJ.clear();
+						ResetGame();
+						OBJ.add(level_renderer=new EditorRenderer(p));
+					}
+				}
+				if (Key.isKeyHeld(KeyEvent.VK_F3)) {
 					OBJ.clear();
 					ResetGame();
-					OBJ.add(level_renderer=new EditorRenderer(p));
+					OBJ.add(control_settings_menu=new ConfigureControls(p));
+				}
+				if (Key.isKeyHeld(KeyEvent.VK_F5)&&System.currentTimeMillis()-lastControllerScan>5000) {
+					CONTROLLERS=ControllerEnvironment.getDefaultEnvironment().rescanControllers();
+					System.out.println(Arrays.toString(CONTROLLERS));
+					lastControllerScan=System.currentTimeMillis();
 				}
-			}
-			if (Key.isKeyHeld(KeyEvent.VK_F3)) {
-				OBJ.clear();
-				ResetGame();
-				OBJ.add(control_settings_menu=new ConfigureControls(p));
-			}
-			if (Key.isKeyHeld(KeyEvent.VK_F5)&&System.currentTimeMillis()-lastControllerScan>5000) {
-				CONTROLLERS=ControllerEnvironment.getDefaultEnvironment().rescanControllers();
-				System.out.println(Arrays.toString(CONTROLLERS));
-				lastControllerScan=System.currentTimeMillis();
-			}
 
-			for (int i=0;i<OBJ.size();i++) {
-				OBJ.get(i).update(updateMult);
-				if (OBJ.get(i).isMarkedForDeletion()) {
-					OBJ.remove(i--);
+				for (int i=0;i<OBJ.size();i++) {
+					OBJ.get(i).update(updateMult);
+					if (OBJ.get(i).isMarkedForDeletion()) {
+						OBJ.remove(i--);
+					}
 				}
+				dt-=(1/244d)*1000000000;
+			}
+			if (dt<0) {
+				dt=0;
 			}
 		}
 	}