diff --git a/includes/og.views.inc b/includes/og.views.inc
index d38a34d..855e401 100644
--- a/includes/og.views.inc
+++ b/includes/og.views.inc
@@ -159,6 +159,9 @@ function og_views_data_alter(&$data) {
   // Override group audience - "gid" (group ID) field argument.
   $data['og_membership']['group']['argument']['handler'] = 'og_handler_argument_group_audience_gid';
 
+  // Create better exposed filter for Field: Groups audience:gid
+  $data['field_data_group_audience']['group_audience_gid']['filter']['handler'] = 'og_handler_filter_group_audience_gid';
+
   // TODO: Remove field-data-group-audience completely form Views and use
   // group membership entity instead.
   unset($data['field_data_group_audience']['group_audience_gid']['argument']);
diff --git a/includes/views/og_handler_filter_group_audience_gid.inc b/includes/views/og_handler_filter_group_audience_gid.inc
new file mode 100644
index 0000000..f06ef82
--- /dev/null
+++ b/includes/views/og_handler_filter_group_audience_gid.inc
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Filter handler for group audience:gid
+ */
+class og_handler_filter_group_audience_gid extends views_handler_filter_many_to_one {
+
+  function get_value_options() {
+
+    // @TODO add extra settings to allow filtering by OG_STATE in og_get_all_group()
+    $groups = og_load_multiple(og_get_all_group());
+    
+    foreach($groups as $group) {
+      if ($group->access()) {
+        $this->value_options[$group->gid] = $group->label;
+      }
+    }
+  }
+}
diff --git a/og.info b/og.info
index 14b3eab..8c5187d 100644
--- a/og.info
+++ b/og.info
@@ -28,6 +28,7 @@ files[] = includes/views/og_handler_field_group_permissions.inc
 ; Views filters
 files[] = includes/views/og_handler_filter_group_state.inc
 files[] = includes/views/og_handler_filter_group_audience_state.inc
+files[] = includes/views/og_handler_filter_group_audience_gid.inc
 
 ; Views relationships
 files[] = includes/views/og_handler_relationship.inc
