diff --git a/views_flipped_table.module b/views_flipped_table.module
index 6858695..26e3e0e 100644
--- a/views_flipped_table.module
+++ b/views_flipped_table.module
@@ -29,17 +29,14 @@ function template_preprocess_views_flipped_table(&$vars) {
   $options  = $view->style_plugin->options;
   $columns  = $handler->sanitize_columns($options['columns'], $fields);
   foreach ($columns as $field => $column) {
-    $vars['wrapper_classes'][$field] = '';
+    $vars['wrapper_classes'][$field] = array();
     // Set up the wrapper label class.
     if ($fields[$field]->options['element_default_classes']) {
-      $vars['wrapper_classes'][$field] .= "views-field views-field-" . $vars['fields'][$field];
+      $vars['wrapper_classes'][$field][] = "views-field views-field-" . $vars['fields'][$field];
     }
     $class = $fields[$field]->element_wrapper_classes(0);
     if ($class) {
-      if ($vars['wrapper_classes'][$field]) {
-        $vars['wrapper_classes'][$field] .= ' ';
-      }
-      $vars['wrapper_classes'][$field] .= $class;
+      $vars['wrapper_classes'][$field][] = $class;
     }
   }
 
@@ -54,10 +51,33 @@ function template_preprocess_views_flipped_table(&$vars) {
   // Determine if the first row is to be shown as a table header.
   $vars['first_row_header'] = (boolean) $vars['view']->style_plugin->options['flipped_table_header_first_field'];
 
-  // Set up classes for odd and even rows.
+  $default_row_class = isset($options['default_row_class']) ? $options['default_row_class'] : FALSE;
+  $row_class_special = isset($options['row_class_special']) ? $options['row_class_special'] : FALSE;
+  // Set up striping values.
   $count = 0;
+  $max = count($vars['rows_flipped']);
   foreach ($vars['rows_flipped'] as $field_name => $row) {
-    $vars['wrapper_classes'][$field_name] .= ($count++ % 2 == 0) ? ' even' : ' odd';
+    $count++;
+    if ($default_row_class) {
+      $vars['wrapper_classes'][$field_name][] = 'views-row';
+      $vars['wrapper_classes'][$field_name][] = 'views-row-' . $count;
+    }
+    if ($row_class_special) {
+      $vars['wrapper_classes'][$field_name][] = 'views-row-' . ($count % 2 ? 'odd' : 'even');
+      if ($count == 1) {
+        $vars['wrapper_classes'][$field_name][] = 'views-row-first';
+      }
+      if ($count == $max) {
+        $vars['wrapper_classes'][$field_name][] = 'views-row-last';
+      }
+    }
+
+    if ($row_class = $view->style_plugin->get_row_class($field_name)) {
+      $vars['wrapper_classes'][$field_name][] = $row_class;
+    }
+
+    // Flatten the classes to a string for each row for the template file.
+    $vars['wrapper_classes'][$field_name] = isset($vars['wrapper_classes'][$field_name]) ? implode(' ', $vars['wrapper_classes'][$field_name]) : '';
   }
 
 }
diff --git a/views_flipped_table.views.inc b/views_flipped_table.views.inc
index 997b73d..5ae09a1 100644
--- a/views_flipped_table.views.inc
+++ b/views_flipped_table.views.inc
@@ -16,6 +16,7 @@ function views_flipped_table_views_plugins() {
         'handler' => 'views_flipped_table_plugin_style_flipped_table',
         'parent' => 'table',
         'uses row plugin' => FALSE,
+        'uses row class' => TRUE,
         'uses fields' => TRUE,
         'uses options' => TRUE,
         'type' => 'normal',
