public Elevator CallDown(int fromFloor){
		//check for error cases
		if ((fromFloor>super.numFloors) || (fromFloor<0)){
			System.out.println("This floor does not exist");
		}
		//first we will send the first idle elevator
		for (Elevator e: elevators){
			synchronized(e){
				//if the elevator is idle
				//or if the elevator is above the rider and it's going down
				if(e.getMyDirection()==Elevator.DIRECTION_NEUTRAL){//direction2 is going upwards
					//add in condition about space
					e.addFloor(fromFloor);
					e.getDownBarriers()[fromFloor].arrive();
					return e;
				}
			}
		}
		//else we will send the first elevator going in the correct elevator
		for (Elevator e: elevators){
			synchronized(e){
				if (fromFloor==super.numFloors && e.getMyDirection()==Elevator.DIRECTION_UP){
					e.addFloor(fromFloor);
					e.getDownBarriers()[fromFloor].arrive();
					return e;
				}
				if (e.getMyDirection()==Elevator.DIRECTION_DOWN && e.getFloor()>=fromFloor){
					e.addFloor(fromFloor);
					e.getDownBarriers()[fromFloor].arrive();
					return e;
				}
			}
		}
		//else if there are no elevators
		return null;
	}