public void redo() throws CommandExecutionException {
		if(!this.futureOperations.isEmpty()) {
			T command = this.futureOperations.remove(0);
			try {
				this.historyStrategy.redo(command);
				this.pastOperations.add(command);

				this.commandInformation.get(command).setFuture(false);
				this.eventBus.post(new HistoryCommandReplayedEvent<>(this));
			} catch(Throwable thr) {
				this.doClear();
				this.eventBus.post(new HistoryChangedEvent<>(this));
				throw new CommandExecutionException(thr);
			}
		}
	}