char guess[MAX_TILES+1];
     int guess_length;
     dict_t *solution;
+    GooCanvasItem *solution_item;
 } rack_t;
 
 static rack_t the_rack;
        rack->tiles[i] = NULL;
     rack->guess_length = 0;
     rack->solution = solution;
+    rack->solution_item = NULL;
 }
 
 static gboolean
        entry = dict_lookup (rack->solution, rack->guess);
        if (DICT_ENTRY_IS_WORD (entry)) {
            *entry = *entry | RACK_DICT_ENTRY_FOUND;
-           printf ("%s is good\n", rack->guess);
-       } else {
-           printf ("%s is not a word\n", rack->guess);
+           goo_canvas_item_simple_changed (GOO_CANVAS_ITEM_SIMPLE (rack->solution_item), FALSE);
        }
        rack_return_all (rack);
        return TRUE;
 
     rack_init (&the_rack, root, word, solution);
 
-    goo_demo_item_new (root,
-                      LETTER_PAD,
-                      LETTER_PAD + 2 * (LETTER_SIZE + 2 * LETTER_PAD),
-                      400, 400 - (2 * (LETTER_SIZE + 2 * LETTER_PAD)),
-                      dict_paint,
-                      solution, NULL);
+    the_rack.solution_item = goo_demo_item_new (root,
+                                               LETTER_PAD,
+                                               LETTER_PAD + 2 * (LETTER_SIZE + 2 * LETTER_PAD),
+                                               400, 400 - (2 * (LETTER_SIZE + 2 * LETTER_PAD)),
+                                               dict_paint,
+                                               solution, NULL);
 }
 
 int