@Override
	public void disengage() {
		if (!isEngaged()) {
			throw new IllegalStateException("not engaged");
		}
		
		assert(this.currentStateId != null);
		switchState(null);
		
		this.evtSrv.removeListener(this);
		this.engaged = false;
	}