public void update() {
		if (playing == false) {
			// we weren't updating, now we are; get the time and return
			playing = true;
			lastUpdate = System.nanoTime();
			return;
		}
		
		// we've already been updating for some time
		// seconds is time since last valid update
		double seconds = (System.nanoTime() - lastUpdate) / 1.0e9;
		lastUpdate = System.nanoTime();
		
		// update velocity and then position for both X, Y
		// bounds check and "warp" position if necessary
		double[] oldVel = vel.clone();
		for (int i = 0; i < pos.length; i++) {
			/*
			if (this instanceof AsteroidModel){
				System.out.println("position "+i+" updated by: "+vel[i]*seconds);
				System.out.println("vel["+i+"]: " + vel[i]+", seconds: "+seconds);
			}
			*/
			vel[i] += acc[i] * seconds;
			pos[i] += vel[i] * seconds;
			if (pos[i] < 0)
				pos[i] = pos[i] + Asteroids.getScreenDims()[i];
			else if (pos[i] > Asteroids.getScreenDims()[i])
				pos[i] = pos[i] - Asteroids.getScreenDims()[i];
		}
		
		if (speedLimit > 0) {
			double curSpeed = Math.sqrt( Math.pow(vel[0], 2) + Math.pow(vel[1], 2) );
			if (curSpeed > speedLimit) {
				vel[0] *= speedLimit / curSpeed;
				vel[1] *= speedLimit / curSpeed;
			}
		}
		
		// update rotational position
		rotPos += rotVel * seconds;
		rotPos %= 2 * Math.PI;
		
		// update distance traveled
		dist += Math.sqrt( Math.pow(vel[0] * seconds, 2) + Math.pow(vel[1] * seconds, 2) );
	}