diff --git a/core/lib/Drupal/Core/Render/Element/Checkboxes.php b/core/lib/Drupal/Core/Render/Element/Checkboxes.php
index 1891ceb..5930a3f 100644
--- a/core/lib/Drupal/Core/Render/Element/Checkboxes.php
+++ b/core/lib/Drupal/Core/Render/Element/Checkboxes.php
@@ -12,13 +12,51 @@
 /**
  * Provides a form element for a set of checkboxes.
  *
- * #options is an associative array, where the key is the #return_value of the
- * checkbox and the value is displayed. The #options array cannot have a 0 key,
- * as it would not be possible to discern checked and unchecked states.
+ * Properties:
+ * - @ref property_access "#access"
+ * - @ref property_after_build "#after_build"
+ * - @ref property_ajax "#ajax"
+ * - @ref property_attributes "#attributes"
+ * - @ref property_default_value "#default_value"
+ * - @ref property_description "#description"
+ * - @ref property_disabled "#disabled"
+ * - @ref property_element_validate "#element_validate"
+ * - @ref property_options "#options": An associative array, where the key is the
+ *   #return_value of the checkbox and the value is displayed. The #options
+ *   array cannot have a 0 key, as it would not be possible to discern checked
+ *   and unchecked states.
+ * - @ref property_parents "#parents"
+ * - @ref property_post_render "#post_render"
+ * - @ref property_prefix "#prefix"
+ * - @ref property_pre_render "#pre_render"
+ * - @ref property_process "#process"
+ * - @ref property_required "#required"
+ * - @ref property_states "#states"
+ * - @ref property_suffix "#suffix"
+ * - @ref property_theme "#theme"
+ * - @ref property_theme_wrappers "#theme_wrappers"
+ * - @ref property_title "#title"
+ * - @ref property_title_display "#title_display"
+ * - @ref property_tree "#tree" (default: TRUE)
+ * - @ref property_type "#type"
+ * - @ref property_weight "#weight"
  *
+ * Usage example:
+ * @code
+ * $form['bundles'] = array(
+ *   '#title' => $this->t('Node types'),
+ *   '#type' => 'checkboxes',
+ *   '#options' => $options,
+ *   '#default_value' => $this->configuration['bundles'],
+ * );
+ * @endcode
+ *
+ * @see template_preprocess_checkboxes()
+ * @see checkboxes.html.twig
  * @see \Drupal\Core\Render\Element\Radios
  * @see \Drupal\Core\Render\Element\Checkbox
  *
+ * @ingroup form_elements
  * @FormElement("checkboxes")
  */
 class Checkboxes extends FormElement {
diff --git a/core/lib/Drupal/Core/Render/Element/Dropbutton.php b/core/lib/Drupal/Core/Render/Element/Dropbutton.php
index 76fab89..e0932ef 100644
--- a/core/lib/Drupal/Core/Render/Element/Dropbutton.php
+++ b/core/lib/Drupal/Core/Render/Element/Dropbutton.php
@@ -10,8 +10,28 @@
 /**
  * Provides a render element for a set of links rendered as a drop-down button.
  *
+ * Properties:
+ * - links: Array of link elements.
+ *   See template_preprocess_links() for supported elements.
+ * - heading: (optional) A heading to precede the links.
+ *   See template_preprocess_links() for supported elements.
+ *
+ * Usage example:
+ * @code
+ * $build['#actions'] = array(
+ *   '#type' => 'dropbutton',
+ *   '#links' => $actions,
+ *   '#attributes' => array(
+ *     'class' => array('views-ui-settings-bucket-operations'),
+ *   ),
+ * );
+ * @endcode
+ *
+ * @see template_preprocess_links()
+ * @see links.html.twig
  * @see \Drupal\Core\Render\Element\Operations
  *
+ * @ingroup render_elements
  * @RenderElement("dropbutton")
  */
 class Dropbutton extends RenderElement {
diff --git a/core/modules/system/theme.api.php b/core/modules/system/theme.api.php
index b88f740..36df461 100644
--- a/core/modules/system/theme.api.php
+++ b/core/modules/system/theme.api.php
@@ -389,6 +389,75 @@
  */
 
 /**
+ * @defgroup render_elements Render Elements
+ * @{
+ * Overview of Render elements.
+ *
+ * @todo About Render elements
+ *
+ * @section sec_twig_theme Twig Templating Engine
+ *
+ * @see form_elements
+ * @}
+ */
+
+/**
+ * @defgroup form_elements Form Elements
+ * @{
+ * Overview of Form elements.
+ *
+ * @todo About Form elements
+ *
+ * @section property_access #access property
+ *
+ * Whether the element is accessible or not; when FALSE, the element is not
+ * rendered and the user submitted value is not taken into consideration.
+ *
+ * Values: TRUE or FALSE.
+ *
+ * @section property_after_build #after_build property
+ *
+ * An array of function names which will be called after the form or element is
+ * built.
+ *
+ * @see render_elements
+ *
+ * @section property_ajax #ajax property
+ *
+ * An array of elements whose values control the behavior of the element with
+ * respect to the Drupal AJAX framework.
+ *
+ * AJAX (Asynchronous Javascript and XML) is a term used for dynamic
+ * communication between the browser and the server, without page reloads.
+ * A purist would insist that the Drupal technique is AHAH (Asychronous HTML and
+ * HTTP) because XML is not used. Until Drupal 7, AJAX was known as AHAH. In a
+ * nutshell an AJAX request follows these steps:
+ * -# Drupal builds a form element with a set of #ajax properties. The
+ *    misc/ajax.js file is included on the page automatically.
+ * -# ajax.js finds all the form elements on the page that have an
+ *    #ajax['callback'] or an #ajax['path'] set and adds an event handler for
+ *    the #ajax['event'] set on that form element.
+ * -# When the #ajax['event'] occurs on the element (such as 'click'), the AJAX
+ *    request is made to the Drupal path of the element's #ajax['path']. If an
+ *    #ajax['callback'] has been specified (the normal case), the Drupal path
+ *    will be system/ajax.
+ * -# Form information gets processed, and the function specified in
+ *    #ajax['callback'] is called.  #ajax['callback'] can return either HTML,
+ *    a renderable array, or an array of AJAX commands.
+ * -# While the user waits for the callback to execute a throbber or progress
+ *    bar is shown as determined by #ajax['progress']. The result is returned to
+ *    the original page containing the form element.
+ * -# ajax.js gets the result. If it is HTML and #ajax['wrapper'] is set, the
+ *    HTML replaces the element specified by #ajax['wrapper']. If it is an array
+ *    of AJAX commands, the commands are executed. and inserts the returned HTML
+ *    into the #ajax['wrapper'].
+ *
+ * Example usages of basic AJAX and AJAX commands are provided in the
+ * @link http://drupal.org/project/examples Examples module @endlink.
+ * @}
+ */
+
+/**
  * @addtogroup hooks
  * @{
  */
