public void update(Dimension size) {
		ship.limitMaximumSpeed();
		ship.move();
		ship.bounce(size);

		for (int i = 0; i < bullets.size(); ++i) {
			TimedObject bullet = bullets.get(i);

			if (bullet.isTimedOut()) {
				bullets.remove(i);
			} else {
				bullet.move();
				bullet.bounce(size);
			}
		}

		for (int i = 0; i < asteroids.size(); ++i) {
			MoveableObject asteroid = asteroids.get(i);

			for (int j = 0; j < bullets.size(); ++j) {
				TimedObject bullet = bullets.get(j);

				if (asteroid.contains(bullet.position)) {
					asteroids.remove(i);
					bullets.remove(j);

					if (difficultyFactor == 1) {
						scoreValue += 10;
					} else if (difficultyFactor < 1) {
						scoreValue += 5;
					} else {
						scoreValue += 15;
					}

					break;
				}
			}
		}

		if (asteroids.size() == 0) {
			asteroidsCount += 5;
			createAsteroids(size);
		}

		for (MoveableObject asteroid : asteroids) {
			asteroid.limitMaximumSpeed();
			asteroid.move();
			asteroid.bounce(size);
		}
	}