diff --git a/workflow_views/includes/workflow_views_handler_filter_sid.inc b/workflow_views/includes/workflow_views_handler_filter_sid.inc
index d036a80..16b39a7 100644
--- a/workflow_views/includes/workflow_views_handler_filter_sid.inc
+++ b/workflow_views/includes/workflow_views_handler_filter_sid.inc
@@ -11,28 +11,86 @@
 class workflow_views_handler_filter_sid extends views_handler_filter_in_operator {
   var $value_form_type = 'select';
 
+  function has_extra_options() {
+    return $this->options['limit'];
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['limit'] = array('default' => TRUE);
+    $options['wid'] = array('default' => 0);
+    $options['include_creation'] = TRUE;
+    return $options;
+  }
+
+  function extra_options_form(&$form, &$form_state) {
+    if ($this->options['limit']) {
+      // We only do this when the form is displayed so this query doesn't run
+      // unnecessarily just when the object is constructed.
+      if ($this->options['wid'] == 0) {
+        $this->options['wid'] = db_result(db_query('SELECT MIN(wid) FROM {workflows}'));
+      }
+      $form['wid'] = array(
+        '#prefix' => '<div class="views-left-40">',
+        '#suffix' => '</div>',
+        '#type' => 'radios',
+        '#title' => t('Workflows'),
+        '#options' => workflow_get_all(),
+        '#description' => t('Select which workflow the states are given from.'),
+        '#default_value' => $this->options['wid'],
+      );
+    }
+    $form['include_creation'] = array(
+      '#type' => 'checkbox',
+      '#title' => 'Include (creation) state?',
+      '#default_value' => $this->options['include_creation'],
+    );
+  }
+
   function get_value_options() {
-    if (!isset($this->value_options)) {
-      $this->value_title = t('Workflow state');
-      foreach (workflow_get_workflows() as $data) {
-        $workflows[$data->wid] = check_plain(t($data->name));
+    if (isset($this->value_options)) {
+      return;
+    }
+    $this->value_title = t('Workflow state');
+    if ($this->options['limit']) {
+      foreach (workflow_get_workflow_states_by_wid($this->options['wid']) as $state) {
+        $states[$state->sid] = check_plain($state->state);
       }
-      $options = array('status' => 1);
-      if (count($workflows) > 1) {
-        $states = array('' => t('No state'));
-        foreach ($workflows as $wid => $name) {
-          foreach (workflow_get_workflow_states_by_wid($wid, $options) as $state) {
-            $states[$name][$state->sid] = check_plain($state->state);
+      $this->value_options = $states;
+      if (!$this->options['include_creation']) {
+        foreach ($this->value_options as $key => $state) {
+          if ($state == '(creation)') {
+            unset($this->value_options[$key]);
           }
         }
       }
-      else {
-        foreach (workflow_get_workflow_states($options) as $state) {
-          $states[$state->sid] = check_plain($state->state);
+      return;
+    }
+
+    foreach (workflow_get_workflows() as $data) {
+      $workflows[$data->wid] = check_plain(t($data->name));
+    }
+    if (count($workflows) > 1) {
+      $states = array('' => t('No state'));
+      foreach ($workflows as $wid => $wname) {
+        foreach (workflow_get_workflow_states_by_wid($wid, $options) as $state) {
+          $states[$name][$state->sid] = check_plain($state->state);
+        }
+      }
+    }
+    else {
+      foreach (workflow_get_workflow_states($options) as $state) {
+        $states[$state->sid] = check_plain($state->state);
+      }
+    }
+    if (!$this->options['include_creation']) {
+      foreach ($states as $key => $state) {
+        if ($state == '(creation)') {
+          unset($states[$key]);
         }
       }
-      $this->value_options = $states;
     }
+    $this->value_options = $states;
   }
 
   function query() {
