private Location closestMate()
    {	
    	Location route;
    	int movementcol;
    	int movementrow;
    	int closest = 999999;
    	Location mate = null;
    	Field field = getField();
    	if(field.getAllCompatibleActors(this)!=null && mate() == false) {
    		List<Location> all = field.getAllCompatibleActors(this);
	    	for(int a = 0; a < all.size(); a++) {
	    		int comparable = Math.abs(this.getLocation().getRow()-all.get(a).getRow()) + 
	    						 Math.abs(this.getLocation().getCol()-all.get(a).getCol());
	    		if(comparable<closest) {
	    			closest = comparable;
	    			mate = all.get(a);
	    		}
	    	}
	    	if(mate.getCol()>this.getLocation().getCol()) {
	    		movementcol = this.getLocation().getCol()+1;
	    	}
	    	else {
	    		movementcol = this.getLocation().getCol()-1;
	    	}
	    	if(mate.getRow()>this.getLocation().getRow()) {
	    		movementrow = this.getLocation().getRow()+1;
	    	}
	    	else {
	    		movementrow = this.getLocation().getRow()-1;
	    	}
	    	if(mate.getCol()==this.getLocation().getCol()) {
	    		route = new Location(movementrow,mate.getCol());
	    	}
	    	else if(mate.getRow()==this.getLocation().getRow()) {
	    		route = new Location(mate.getRow(), movementcol);
	    	}
	    	else {
	    		route = new Location(movementrow, movementcol);
	    	}
    	}
    	else {
    		return field.freeAdjacentLocation(this.getLocation());
    	}
    	return route;
    }