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

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

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

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