+    m_radioKind = new wxRadioBox(this, wxID_ANY, _T("&Kind"),
+                                 wxDefaultPosition, wxDefaultSize,
+                                 WXSIZEOF(kinds), kinds,
+                                 1);
+    sizerLeft->Add(m_radioKind, 0, wxGROW | wxALL, 5);
+    wxButton *btn = new wxButton(this, CheckboxPage_Reset, _T("&Reset"));
+    sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
+
+    // middle pane
+    wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, _T("&Operations"));
+    wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL);
+
+    sizerMiddle->Add(CreateSizerWithTextAndButton(CheckboxPage_ChangeLabel,
+                                                     _T("Change label"),
+                                                     wxID_ANY,
+                                                     &m_textLabel),
+                     0, wxALL | wxGROW, 5);
+    sizerMiddle->Add(new wxButton(this, CheckboxPage_Check, _T("&Check it")),
+                     0, wxALL | wxGROW, 5);
+    sizerMiddle->Add(new wxButton(this, CheckboxPage_Uncheck, _T("&Uncheck it")),
+                     0, wxALL | wxGROW, 5);
+    sizerMiddle->Add(new wxButton(this, CheckboxPage_PartCheck,
+                                  _T("Put in &3rd state")),
+                     0, wxALL | wxGROW, 5);
+
+    // right pane
+    wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL);
+    m_checkbox = new wxCheckBox(this, CheckboxPage_Checkbox, _T("&Check me!"));
+    sizerRight->Add(0, 0, 1, wxCENTRE);
+    sizerRight->Add(m_checkbox, 1, wxCENTRE);
+    sizerRight->Add(0, 0, 1, wxCENTRE);
+    sizerRight->SetMinSize(150, 0);
+    m_sizerCheckbox = sizerRight; // save it to modify it later
+
+    // the 3 panes panes compose the window
+    sizerTop->Add(sizerLeft, 0, wxGROW | (wxALL & ~wxLEFT), 10);
+    sizerTop->Add(sizerMiddle, 1, wxGROW | wxALL, 10);
+    sizerTop->Add(sizerRight, 1, wxGROW | (wxALL & ~wxRIGHT), 10);
+
+    // final initializations
+    Reset();