+</code></pre>
+
+<p>After retrieving the board, the function adds a new waiter to
+waiters list and returns without setting a reply.</p>
+
+<p>Before returning, it increases <strong>req</strong> request’s reference count using <strong>afb_req_addref</strong> function.</p>
+
+<blockquote><p>When a method returns without setting a reply,
+it <strong>MUST</strong> increment request’s reference count
+using <strong>afb_req_addref</strong>. If unpredictable behaviour may pop up.</p></blockquote>
+
+<p>Later, when a board changes, it calls <em>tic-tac-toe</em> <strong>changed</strong> function
+with reason of change in parameter.</p>
+
+<p>Here is the full listing of the function <strong>changed</strong>:</p>
+
+<pre><code>/*
+ * signals a change of the board
+ */
+static void changed(struct board *board, const char *reason)
+{
+ struct waiter *waiter, *next;
+ struct json_object *description;
+
+ /* get the description */
+ description = describe(board);
+
+ waiter = board->waiters;
+ board->waiters = NULL;
+ while (waiter != NULL) {
+ next = waiter->next;
+ afb_req_success(waiter->req, json_object_get(description), reason);
+ afb_req_unref(waiter->req);
+ free(waiter);
+ waiter = next;
+ }