public void act(int timestamp) {
		//Do actions, then check fuel levels at end of tick
		
		if (currentLocation instanceof Hangar) {
			Simulation.getStatistics().incrementNumberOfTakeOffs(this);
			takeOff(timestamp);	
		} 
		else if (currentLocation instanceof Airspace) {	
			Simulation.getStatistics().incrementNumberOfLandings(this);
			land(timestamp);
			
			//NB: Fuel assumed to last until the end of the tick
			checkFuelLevels(timestamp);		
		} 
		else if (currentLocation instanceof Workshop) {
			//TODO: Remove logging text
			System.out.println("The plane is in Workshop");
			
			//TODO: If the aircraft is in the workshop for longer than an hour, complete repairs and move to hangar
			
		}
		else if (currentLocation instanceof Runway) {
			((Runway)currentLocation).incrementTimeInUse();
			
			if(status == departing) {
				System.out.println("" + this.getAircraftName() + " :: Currently taking off..");
				System.out.println(this.toString());
				
				//Check whether the aircraft should break down
				if(rand.nextDouble() < Simulation.BREAKDOWN_DURING_TAKEOFF_PROBABILITY ) {
//					throw new AircraftBreakDownException();
					this.breakdown(timestamp);
				}
				
				//Check whether the aircraft may finish taking off
				if(waitingTimeInQueue >= this.timeNeededToTakeOff) {
					finaliseTakeOff(timestamp);
				}

				//NB: Fuel assumed to last until the end of the tick
				checkFuelLevels(timestamp);
			}
			else if(status == landing) {
				System.out.println(this.getAircraftName() + " :: Currently landing.. ");
				System.out.println(this.toString());
				
				//Check whether the aircraft may finish landing
				if(waitingTimeInQueue >= this.timeNeededToLand) {
					finaliseLanding(timestamp);
				}
			}
			else {
				//Still waiting to take off / land.
				//Change nothing. 
				//Continue to land/take off uninterrupted. 
			}
			
		}
		else {
			System.out.println("Currently in an unknown location");
		}
		
		this.incrementWaitTimeByTickSize();
	}