I have written the following class and corresponding companion object:

```
class Tile(val tileCoordinate: Int, val pieceOnTile: Piece) {
    override def toString(): String = {
        if(isOccupied()) {
            pieceOnTile.toString()
        }
        "-"
    }

    def isOccupied(): Boolean = pieceOnTile != null
}

object Tile {
    def apply(coordinate: Int, piece: Piece): Tile = {
        new Tile(coordinate, piece)
    }

    def apply(coordinate: Int): Tile = {
        new Tile(coordinate, ??) // what is the best design here?An Option?
    }
}

```

My question is, when the factory method to create a `Tile` without a `piece` on it is invoked, what is the appropriate argument to pass in to the `Tile` constructor? I don't want to pass in `null`, that seems like a poor design choice. Should I have the main constructor take an `Option[Piece]` and pass in `None`?

That seems sort of ugly too because when I want to create a tile I'd need to say:

```
val t = Tile(1, Some(new Knight()));

```