@Override
	public void addTile(Tile tile) throws Exception{
		ArrayList<Tile> run, group;
		
		if(isRun){
			run = this.getTiles();
			
			if(tile.colour != run.get(0).colour)
				throw new Exception(tile.toString() + " is not the same colour as the run " + this.toString());
			else if(tile.number == run.get(0).number - 1)
				run.add(0, new Tile(tile));
			else if(tile.number == run.get(run.size()-1).number + 1)
				run.add(new Tile(tile));
			else
				throw new Exception(tile.toString() + " is not a valid number for the run " + this.toString());
			
			this.setTiles(run);
		}
		
		else{
			group = this.getTiles();
			
			if(tile.number != group.get(0).number)
				throw new Exception(tile.toString() + " is not the same number as the group " + this.toString());
			
			for(Tile groupTile : this.getTiles())
				if(groupTile.colour == tile.colour)
					throw new Exception(tile.toString() + " is a colour that already exists in the group");
			
			group.add(new Tile(tile));
			this.setTiles(group);
		}
	}