public void takeStep(Graphics2D graphics) {
		long now = System.nanoTime();
		double delta = this.getLastUpdateTime() > 0 ? (now - this.getLastUpdateTime()) / 1000000000L : 0;
		if(delta > 1) {
			delta = 0;
		}
		this.setLastUpdateTime(now);

		DeltaState state = this.getEventQueue().takeState(delta);

		for(GameComponent<?> component : new ArrayList<GameComponent<?>>(this.getComponents())) {
			if(component.isDestroyPending()) {
				this.removeComponent(component);
			}
			else {
				component.update(state);
				component.render(graphics);
			}
		}
	}