Step 4: replace "global " with "variable " Original: proc updateBoard {} { global cellarray possarray global cellchangedcolor global arabicmode for {set index 0} {$index < 81} {incr index} { set singlevalue [checkPossibleForOne $index] if {$singlevalue != 0} { if {!$arabicmode} { # convert to kanji first set singlevalue [toKanji $singlevalue] } set cellarray($index) $singlevalue .sudoku.board.cellentry$index configure \ -bg $cellchangedcolor } } } Final Code: proc ::sud::updateBoard {} { variable cellarray variable possarray variable cellchangedcolor variable arabicmode for {set index 0} {$index < 81} {incr index} { set singlevalue [checkPossibleForOne $index] if {$singlevalue != 0} { if {!$arabicmode} { # convert to kanji first set singlevalue [toKanji $singlevalue] } set cellarray($index) $singlevalue .sudoku.board.cellentry$index configure \ -bg $cellchangedcolor } } }