     }
     
     /// - returns: All squares for a given set of tiles.
-    func squaresFor(tiles: [Tile]) -> [Square] {
+    public func squaresFor(tiles: [Tile]) -> [Square] {
         return squares.flatten().mapFilter({ (square) -> (Square?) in
             if let tile = square.tile where tiles.contains(tile) {
                 return square

    return ObjectIdentifier(lhs) == ObjectIdentifier(rhs)
}

public final class Square: CustomDebugStringConvertible, Equatable {
    /// - returns: Square array.
    class func createSquares() -> [[Square]] {
        var squares = [[Square]]()

        guard let tile = tile else { return 0 }
        return (tile.placement == .Fixed ? 1 : type.wordMultiplier)
    }
    
    public var hashValue: Int {
        return "\(row),\(column)".hashValue
    }
}

extension Papyrus {
