diff --git a/plugins/views_plugin_style.inc b/plugins/views_plugin_style.inc
index 5fdece5..3e2096d 100644
--- a/plugins/views_plugin_style.inc
+++ b/plugins/views_plugin_style.inc
@@ -100,16 +100,43 @@ class views_plugin_style extends views_plugin {
    * Return the token replaced row class for the specified row.
    */
   function get_row_class($row_index) {
+    $extra_class = $this->options['row_class_extra'];
+    $classes = array();
+    $max = count($this->view->result) - 1;
+
+    // Add specified class for this row
+    if ($extra_class['rows'][$row_index]) {
+      $classes[] = $extra_class['rows'][$row_index];
+    }
+
+    // Add specified class for first row
+    if ($row_index == 0 && $extra_class['first']) {
+      $classes[] = $extra_class['first'];
+    }
+
+    // Add specified class for last row
+    if ($max == 0 || ($row_index == $max && $extra_class['last'])) {
+      $classes[] = $extra_class['last'];
+    }
+
+    // Add specified class for odd/even rows
+    if ($row_class = $extra_class[($row_index % 2 ? 'odd' : 'even')]) {
+      $classes[] = $row_class;
+    }
+
     if ($this->uses_row_class()) {
       $class = $this->options['row_class'];
       if ($this->uses_fields() && $this->view->field) {
         $class = $this->tokenize_value($class, $row_index);
       }
 
-      $classes = explode(' ', $class);
+      $classes += explode(' ', $class);
       foreach ($classes as &$class) {
         $class = drupal_clean_css_identifier($class);
       }
+    }
+
+    if (count($classes)) {
       return implode(' ', $classes);
     }
   }
@@ -145,6 +172,7 @@ class views_plugin_style extends views_plugin {
     $options['grouping'] = array('default' => '');
     if ($this->uses_row_class()) {
       $options['row_class'] = array('default' => '');
+      $options['row_class_extra'] = array('default' => array('odd' => '', 'even' => '', 'first' => '', 'last' => '', 'rows' => array()));
     }
 
     return $options;
@@ -179,6 +207,60 @@ class views_plugin_style extends views_plugin {
         '#default_value' => $this->options['row_class'],
       );
 
+      $form['row_class_extra'] = array(
+        '#title' => t('Extra CSS config'),
+        '#description' => t('Add class to provide a more powerfull CSS customization.'),
+        '#type' => 'fieldset',
+        '#collapsible' => TRUE,
+        '#collapsed' => FALSE,
+      );
+
+      $form['row_class_extra']['first'] = array(
+        '#title' => t('First row class'),
+        '#description' => t('The class to provide on first row.'),
+        '#type' => 'textfield',
+        '#default_value' => $this->options['row_class_extra']['first'],
+      );
+
+      $form['row_class_extra']['last'] = array(
+        '#title' => t('Last row class'),
+        '#description' => t('The class to provide on last row.'),
+        '#type' => 'textfield',
+        '#default_value' => $this->options['row_class_extra']['last'],
+      );
+
+      $form['row_class_extra']['odd'] = array(
+        '#title' => t('Row class odd'),
+        '#description' => t('The class to provide on each odd row.'),
+        '#type' => 'textfield',
+        '#default_value' => $this->options['row_class_extra']['odd'],
+      );
+
+      $form['row_class_extra']['even'] = array(
+        '#title' => t('Row class even'),
+        '#description' => t('The class to provide on each even row.'),
+        '#type' => 'textfield',
+        '#default_value' => $this->options['row_class_extra']['even'],
+      );
+
+
+      $form['row_class_extra']['rows'] = array(
+        '#title' => t('Extra CSS for each row'),
+        '#description' => t('Add class to provide a more powerfull CSS customization on each rows.'),
+        '#type' => 'fieldset',
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+      );
+
+      for($i = 0; $i < 10; $i++) {
+        $form['row_class_extra']['rows'][$i] = array(
+          '#title' => t('Class for row !index', array('!index' => $i + 1)),
+          '#description' => t('The class to provide on row !index.', array('!index' => $i + 1)),
+          '#type' => 'textfield',
+          '#default_value' => $this->options['row_class_extra']['rows'][$i],
+        );
+      }
+
       if ($this->uses_fields()) {
         $form['row_class']['#description'] .= ' ' . t('You may use field tokens from as per the "Replacement patterns" used in "Rewrite the output of this field" for all fields.');
       }
