 struct BoardNode {
 
     private static let goal = "1234567890"
-    private var h: Int
     private static let blankTile: Character = "0"
     private static let squareGridSize = 3
 
     private let prevBoard: Node<BoardNode>?
     private let boardLayout: String
     private let direction: Direction?
-    private let f, g: Int
-    private let blankTilePos: (Int, Int)
+    private var f: Int?
+    private let g: Int
+    private let h: Int?
+    // private let blankTilePos: (Int, Int)?
 
     private var inOpen = false
     private var possibleMoves: [Node<BoardNode>] = []

    }

    private func findTile(tile: Character) -> (dividedArrayPos: Int, modulusArrayPos: Int) {
        //let index = boardLayout.characters.indexOf(tile)
        
        let fromStart = boardLayout.startIndex
        let index = fromStart.advancedBy(boardLayout.characters.count)

        return (index / BoardNode.squareGridSize, index % BoardNode.squareGridSize)
    }

        self.boardLayout = boardLayout
        self.direction = direction
        self.g = prevBoard != nil ? prevBoard!.data.g + 1 : g
        //self.f = self.g + self.h
        self.h = 1
        //self.blankTilePos = findTile(BoardNode.blankTile)
    }

    private mutating func pushPossibleMove(node: Node<BoardNode>) {
