public void moveToPosition(Position nextPosition){

		if(vehicle != null && mapStolen){
			flyToVaderBase();
			mapStolen = false;
		}

		inhabitantColl = super.getInhabitantColl();	
		if(inhabitantColl.objectAt(nextPosition)){
			TetraGUIManager.DisplaySteps("THero " + getName() + " (ID: " + getTetId() + ") cannot move to Location (" 
					+ nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ") as ");
			TetraGUIManager.DisplaySteps(((TRovers)inhabitantColl.getLocatableAtPosition(nextPosition)).getType() + " present at that location!!");
			return;
		}

		tbaseColl = super.getBaseColl();
		if(tbaseColl.objectAt(nextPosition)){
			locatableObj = tbaseColl.getLocatableAtPosition(nextPosition);

			if(locatableObj instanceof THeroBase){
				inhabitantColl.changePosition(this.getPosition(), nextPosition);
				this.setPosition(nextPosition);
				TetraGUIManager.DisplaySteps("THero " + getName() + " (ID: " + getTetId() + ") has moved to Location (" + nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ")");
				enterHeroBase(locatableObj);
				return;
			}

			if(locatableObj instanceof TVaderBase){
				inhabitantColl.changePosition(this.getPosition(), nextPosition);
				this.setPosition(nextPosition);
				TetraGUIManager.DisplaySteps("THero " + getName() + " (ID: " + getTetId() + ") has moved to Location (" + nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ")");
				enterVaderBase(locatableObj);
				return;
			}

			if(locatableObj instanceof MapBase){
				inhabitantColl.changePosition(this.getPosition(), nextPosition);
				this.setPosition(nextPosition);
				TetraGUIManager.DisplaySteps("THero " + getName() + " (ID: " + getTetId() + ") has moved to Location (" + nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ")");
				enterMapBase(locatableObj);
				return;
			}
			TetraGUIManager.DisplaySteps("TRover " + getName() + " (ID: " + getTetId() + ") has cannot moved to Location (" + nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ")");
			return;
		}

		vehicleColl = super.getVehicleColl();
		if(vehicleColl.objectAt(nextPosition)){
			if(mapStolen){
				locatableObj = vehicleColl.getLocatableAtPosition(nextPosition);
				vehicleColl.changePosition(this.getPosition(), nextPosition);
				this.setPosition(nextPosition);
				setVehicle((Vehicle)locatableObj);
			}
			return;
		}

		inhabitantColl.changePosition(this.getPosition(), nextPosition);
		this.setPosition(nextPosition);
		TetraGUIManager.DisplaySteps("THero " + getName() + " (ID: " + getTetId() + ") has moved to Location (" + nextPosition.getRowNo() + ", " + nextPosition.getColumnNo() + ")");
	}