diff --git a/themekey_admin.inc b/themekey_admin.inc
index 701fb8c..21fee5b 100644
--- a/themekey_admin.inc
+++ b/themekey_admin.inc
@@ -197,6 +197,14 @@ function themekey_abstract_rule_chain_form($form, &$form_state, $options) {
       '#type' => 'hidden',
       '#default_value' => $item['module'],
     );
+
+    // Extend form with [old_items] additional fields.
+    if (isset($options['additional_fields'])) {
+      foreach ($options['additional_fields'] as $field_name => $field_definition) {
+        $form['old_items'][$item['id']][$field_name] = $field_definition;
+        $form['old_items'][$item['id']][$field_name]['#default_value'] = $item[$field_name];
+      }
+    }
   }
 
   $form['new_item']['property'] = array(
@@ -236,6 +244,13 @@ function themekey_abstract_rule_chain_form($form, &$form_state, $options) {
     '#value' => t('Save configuration'),
   );
 
+  // Extend form with [new_item] additional fields.
+  if (isset($options['additional_fields'])) {
+    foreach ($options['additional_fields'] as $field_name => $field_definition) {
+      $form['new_item'][$field_name] = $field_definition;
+    }
+  }
+
   return $form;
 }
 
@@ -700,6 +715,13 @@ function theme_themekey_abstract_rule_chain_form($variables, $options) {
         $form['old_items'][$key]['enabled']['#attributes']['class'] = array('themekey-property-enabled');
         $form['old_items'][$key]['theme']['#attributes']['class'] = array('themekey-property-theme themekey-fadeable');
 
+        // Add special classes to [old_items] additional columns.
+        if (isset($options['additional_fields'])) {
+          foreach ($options['additional_fields'] as $field_name) {
+            $form['old_items'][$key]['parent']['#attributes']['class'] = array("themekey-property-$field_name");
+          }
+        }
+
         if (isset($form['old_items'][$key]['append_path'])) {
           // Special element of ThemeKey Redirect. See themekey_redirect_rule_chain_form().
           $form['old_items'][$key]['append_path']['#attributes']['class'] = array('themekey-property-append-path themekey-fadeable');
@@ -748,6 +770,17 @@ function theme_themekey_abstract_rule_chain_form($variables, $options) {
             (isset($form['old_items'][$key]['append_path']) ? drupal_render($form['old_items'][$key]['append_path']) : ''),
         );
 
+        // Extend table with [old_items] additional columns.
+        // It would be logical to place addition columns between 'theme'
+        // and 'enabled' columns.
+        if (isset($options['additional_fields'])) {
+          foreach ($options['additional_fields'] as $field_name) {
+            $elements[] = array(
+              'data' => drupal_render($form['old_items'][$key][$field_name]),
+            );
+          }
+        }
+
         $elements[] = array(
           'data' => drupal_render($form['old_items'][$key]['enabled']),
         );
@@ -816,6 +849,13 @@ function theme_themekey_abstract_rule_chain_form($variables, $options) {
         $form['new_item']['wildcard']['#attributes']['style'] = 'display: none';
       }
 
+      // Add special classes to [new_item] additional columns.
+      if (isset($options['additional_fields'])) {
+        foreach ($options['additional_fields'] as $field_name) {
+          $form['new_item'][$field_name]['#attributes']['class'] = array("themekey-property-$field_name");
+        }
+      }
+
       $elements = array();
       $elements[] = t('New Rule:');
       $elements[] = array(
@@ -830,6 +870,16 @@ function theme_themekey_abstract_rule_chain_form($variables, $options) {
           // Special element of ThemeKey Redirect. See themekey_redirect_rule_chain_form().
           (isset($form['new_item']['append_path']) ? drupal_render($form['new_item']['append_path']) : ''),
       );
+
+      // Extend table with [new_item] additional columns.
+      // It would be logical to place addition columns between 'theme'
+      // and 'enabled' columns.
+      if (isset($options['additional_fields'])) {
+        foreach ($options['additional_fields'] as $field_name) {
+          $elements[] = array('data' => drupal_render($form['new_item'][$field_name]));
+        }
+      }
+
       $elements[] = array('data' => drupal_render($form['new_item']['enabled']));
 
       $row['data'] = $elements;
@@ -838,12 +888,21 @@ function theme_themekey_abstract_rule_chain_form($variables, $options) {
   }
 
   if (!empty($rows)) {
-    $header = array(
-      '',
-      $options['header'][0],
-      $options['header'][1],
-      $options['header'][2],
-    );
+    // Remove 'Operation', 'Parent', 'Weight' and 'Page Cache' from header array
+    // for 'new_item' table.
+    $header = $options['header'];
+    array_unshift($header, '');
+
+    foreach ($header as $key => $header_label) {
+      if (in_array($header_label, array(
+        t('Operation'),
+        t('Parent'),
+        t('Weight'),
+        t('Page<br />Cache'),
+      ))) {
+        unset($header[$key]);
+      }
+    }
 
     $output .= '<a name="themekey_new_rule"></a>';
     $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'themekey-new-item')));
diff --git a/themekey_base.inc b/themekey_base.inc
index 45b542c..239a695 100644
--- a/themekey_base.inc
+++ b/themekey_base.inc
@@ -363,6 +363,12 @@ function themekey_match_rule_childs(&$parameters, $options, $parent = 0) {
             'theme' => $item->theme,
             'rules_matched' => $rules,
           );
+
+          // Extend returning array.
+          if ($options['table'] == 'themekey_css_rules') {
+            $child_lookups[$parent]['css_group'] = $item->css_group;
+            $child_lookups[$parent]['css_weight'] = $item->css_weight;
+          }
         }
 
         // return own theme or theme from child property or NULL in case of a database error
diff --git a/themekey_css/themekey_css.install b/themekey_css/themekey_css.install
index fed571b..2bb2eb1 100644
--- a/themekey_css/themekey_css.install
+++ b/themekey_css/themekey_css.install
@@ -20,6 +20,21 @@ function themekey_css_schema() {
   $schema = array();
   $schema['themekey_css_rules'] = $themekey_schema['themekey_properties'];
 
+  // Extend schema. Add css_group and css_weight columns.
+  $schema['themekey_css_rules']['fields']['css_group'] = array(
+    'type' => 'varchar',
+    'length' => 255,
+    'not null' => TRUE,
+    'default' => 'CSS_DEFAULT',
+  );
+
+  $schema['themekey_css_rules']['fields']['css_weight'] = array(
+    'type' => 'int',
+    'unsigned' => FALSE,
+    'not null' => TRUE,
+    'default' => 0,
+  );
+
   return $schema;
 }
 
@@ -30,3 +45,26 @@ function themekey_css_uninstall() {
   variable_del('themekey_css_files');
 }
 
+/**
+ * Implements hook_update_N().
+ *
+ * Update themekey_css_rules table: add css_group and css_weight columns.
+ */
+function themekey_css_update_7100() {
+  $css_group = array(
+    'type' => 'varchar',
+    'length' => 255,
+    'not null' => TRUE,
+    'default' => 'CSS_DEFAULT',
+  );
+
+  $css_weight = array(
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0,
+  );
+
+  db_add_field('themekey_css_rules', 'css_group', $css_group);
+  db_add_field('themekey_css_rules', 'css_weight', $css_weight);
+}
\ No newline at end of file
diff --git a/themekey_css/themekey_css.module b/themekey_css/themekey_css.module
index 6b47b7c..98f46a8 100644
--- a/themekey_css/themekey_css.module
+++ b/themekey_css/themekey_css.module
@@ -90,7 +90,10 @@ function themekey_css_init() {
     ));
     if (is_array($result) && 'default' != $result['theme']) {
       drupal_alter('themekey_add_css', $result['theme'], $result['rules_matched']);
-      drupal_add_css($result['theme']);
+      drupal_add_css($result['theme'], array(
+        'group' => constant($result['css_group']),
+        'weight' => $result['css_weight'],
+      ));
       if (variable_get('themekey_debug_trace_rule_switching', FALSE)) {
         themekey_set_debug_message('Adding CSS file %css_file.', array('%css_file' => $result['theme']));
       }
diff --git a/themekey_css/themekey_css_admin.inc b/themekey_css/themekey_css_admin.inc
index 93fc18c..32cb6ab 100644
--- a/themekey_css/themekey_css_admin.inc
+++ b/themekey_css/themekey_css_admin.inc
@@ -26,10 +26,34 @@ require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'themekey') . '/theme
  * @ingroup forms
  */
 function themekey_css_rule_chain_form($form, &$form_state) {
+  $css_group_options = array(
+    'CSS_DEFAULT' => 'CSS_DEFAULT',
+    'CSS_THEME' => 'CSS_THEME',
+    'CSS_SYSTEM' => 'CSS_SYSTEM',
+  );
+
+  $css_weight_options = array();
+
+  for ($i = -50; $i <= 50; $i++) {
+    $css_weight_options[$i] = $i;
+  }
+
   return themekey_abstract_rule_chain_form($form, $form_state, array(
     'load_rules_callback' => 'themekey_css_load_rules',
     'themes' => themekey_css_options(),
     'rule_delete_path' => 'admin/config/user-interface/themekey/css/delete/',
+    'additional_fields' => array(
+      'css_group' => array(
+        '#type' => 'select',
+        '#default_value' => 'CSS_DEFAULT',
+        '#options' => $css_group_options,
+      ),
+      'css_weight' => array(
+        '#type' => 'select',
+        '#default_value' => 0,
+        '#options' => $css_weight_options,
+      ),
+    ),
   ));
 }
 
@@ -97,12 +121,18 @@ function theme_themekey_css_rule_chain_form($variables) {
   return theme_themekey_abstract_rule_chain_form($variables, array(
     'header' => array(
       t('Adding CSS Rule Chain'),
-      t('CSS'),
+      t('CSS file'),
+      t('CSS group'),
+      t('CSS weight'),
       t('Enabled'),
       t('Operation'),
       t('Parent'),
       t('Weight'),
       t('Page<br />Cache'),
-    )
+    ),
+    'additional_fields' => array(
+      'css_group',
+      'css_weight',
+    ),
   ));
 }
\ No newline at end of file
