protected void unstableRun() {
		long startTime = System.nanoTime();
		long tTime = 0;
		int fCount = 0;
		
		while(running) {
			// Increment the amount of frames that have passed by one
			fCount++;

			// Add the time it took to complete the last frame
			tTime += System.nanoTime() - startTime;

			// Turn the totaled time between frame and convert it into seconds.
			// If a second has passed, make the framerate the amount of frames
			// passed and reset all varibles.
			if ((double) tTime / (double) 1e9 >= 1) {
				framerate = fCount;
				tTime = 0;
				fCount = 0;
			}
			
			double delta = (double) (System.nanoTime() - startTime) / (double) 1e9;

			// Get the start time to compare against
			startTime = System.nanoTime();
			
			listener.threadTick(this, delta);

			try {
				Thread.sleep(10);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		
	}