private Tile tilePosition(Boardable b, Mobile client) {
    if (b == null) return null ;
    if (client == null || b.allowsEntry(client)) {
      if (b instanceof Venue) return ((Venue) b).mainEntrance() ;
      if (b instanceof Tile) {
        final Tile t = (Tile) b ;
        return t.blocked() ? null : t ;
      }
      if (b instanceof Boardable) {
        for (Boardable e : ((Boardable) b).canBoard(null)) {
          if (e instanceof Tile) return (Tile) e ;
        }
        return null ;
      }
    }
    return Spacing.nearestOpenTile(b, b) ;
  }