diff --git a/core/includes/form.inc b/core/includes/form.inc
index 87f8edf..128cfcd 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -1527,6 +1527,9 @@ function form_process_container($element, &$form_state) {
  */
 function theme_tableselect($variables) {
   $element = $variables['element'];
+  $table = array(
+    '#theme' => 'table',
+  );
   $rows = array();
   $header = $element['#header'];
   if (!empty($element['#options'])) {
@@ -1566,7 +1569,7 @@ function theme_tableselect($variables) {
     // checkboxes/radios in the first table column.
     if ($element['#js_select']) {
       // Add a "Select all" checkbox.
-      drupal_add_library('system', 'drupal.tableselect');
+      $table['#attached']['library'][] = array('system', 'drupal.tableselect');
       array_unshift($header, array('class' => array('select-all')));
     }
     else {
@@ -1575,7 +1578,14 @@ function theme_tableselect($variables) {
       array_unshift($header, '');
     }
   }
-  return theme('table', array('header' => $header, 'rows' => $rows, 'empty' => $element['#empty'], 'attributes' => $element['#attributes']));
+  $table += array(
+    '#header' => $header,
+    '#rows' => $rows,
+    '#empty' => $element['#empty'],
+    '#attributes' => $element['#attributes'],
+  );
+
+  return drupal_render($table);
 }
 
 /**
@@ -2770,16 +2780,24 @@ function theme_form_element($variables) {
   $prefix = isset($element['#field_prefix']) ? '<span class="field-prefix">' . $element['#field_prefix'] . '</span> ' : '';
   $suffix = isset($element['#field_suffix']) ? ' <span class="field-suffix">' . $element['#field_suffix'] . '</span>' : '';
 
+  $form_element_label = array(
+    '#theme' => 'form_element_label',
+    '#required' => isset($element['#required']) ? $element['#required'] : '',
+    '#title' => isset($element['#title']) ? $element['#title'] : '',
+    '#title_display' => isset($element['#title_display']) ? $element['#title_display'] : '',
+    '#id' => isset($element['#id']) ? $element['#id'] : '',
+  );
+
   switch ($element['#title_display']) {
     case 'before':
     case 'invisible':
-      $output .= ' ' . theme('form_element_label', $variables);
+      $output .= ' ' . drupal_render($form_element_label);
       $output .= ' ' . $prefix . $element['#children'] . $suffix . "\n";
       break;
 
     case 'after':
       $output .= ' ' . $prefix . $element['#children'] . $suffix;
-      $output .= ' ' . theme('form_element_label', $variables) . "\n";
+      $output .= ' ' . drupal_render($form_element_label) . "\n";
       break;
 
     case 'none':
@@ -2851,7 +2869,8 @@ function theme_form_element_label($variables) {
   }
 
   // If the element is required, a required marker is appended to the label.
-  $required = !empty($element['#required']) ? theme('form_required_marker', array('element' => $element)) : '';
+  $form_required_marker = array('#theme' => 'form_required_marker');
+  $required = !empty($element['#required']) ? drupal_render($form_required_marker) : '';
 
   $title = filter_xss_admin($element['#title']);
 
