     case Quit
 }
 
-public func processSfen(sfen: String, think: Think, board: Board, color: Pieces, info: Info) -> Result {
+public func processSfen(playerName: String, sfen: String, think: Think, board: Board, color: Pieces, info: Info) -> Result {
     var commands = sfen.components(separatedBy: " ")
     //    print(commands)
     switch commands[0] {
     case "init":
         let bb = SimpleBitBoard()
         bb.initialize(8, height: 8)
+        print("")
         return .Game(bb)
     case "quit":
-        print("byebye!")
         return .Quit
     case "undo":
         print("Not yet implemented")

    if edaxStr.uppercased() == "PS" {
        return .Pass
    } else {
        return handFromStr(str: edaxStr)
    }
}

public func handFromStr(str: String) -> Move {
    let b = str.uppercased()
    if let first = b.characters.first, let last = b.characters.last {
        var row = -1;

            print("")
        }
    case "go":
        print("\n")
        let boardRep = BoardBuilder.build(board)
        if (boardRep.isAnyPuttable(color)) {
            let hand = think.think(color, board: boardRep, info: info)
            if board.canPut(color, x: hand.col, y: hand.row) {
                _ = board.put(color, x: hand.col, y: hand.row, guides: false, returnChanges: false)
                let handStr = strFromMove(move: .Move(hand.col, hand.row))
                print(">\(playerName) plays \(handStr)")
                return .Moved(board)
            } else {
                // Treat invalid put by think as pass
                print(">\(playerName) plays PS")
                return .Moved(board)
            }
        } else {
            // Treat invalid put by think as pass
            print(">\(playerName) plays PS")
            return .Moved(board)
        }
    default:
