@Override
	public void run() {
		List<UIEvent> lastEvents = Model.getModel().getInteractionStack().getLastEvents(2);
		if (lastEvents.get(0).getEventType() != EventType.MOUSE_BUTTON_UP
				|| lastEvents.get(0).getButton() != 1
				|| lastEvents.get(1).getEventType() != EventType.MOUSE_BUTTON_DOWN
				|| Model.getModel().getActionSelection().isEmpty()
				|| Model.getModel().getSimpleSelection().isEmpty()) {
			return;
		}

		// IMPROVE Clean this : we use a Selectable, when we would need a Ship.
		// Therefore, we have an extraneous cast.
		// However, we might attack something else than ships ...
		Entity target = Model.getModel().getActionSelection().getFirst();
		if (!(target instanceof Star || target instanceof Planet)) {
			return;
		}

		for (Entity selectable : Model.getModel().getSimpleSelection()) {
			if (selectable != target) {

				// Remove existing movement and combat behaviors
				// TODO We should find a more systematic way of removing existing user triggered behaviors
				selectable.removeBehaviorsByClass(Movement.class);
				selectable.removeBehaviorsByClass(InflictLaserDamage.class);

				// Add new orbit behavior
				selectable.addBehavior(new Orbit(selectable, target, selectable.getPos().distance(target.getPos()) + 20, false));
			}
		}
	}