diff --git a/includes/views/handlers/og_handler_filter_group_audience_gid.inc b/includes/views/handlers/og_handler_filter_group_audience_gid.inc
new file mode 100644
index 0000000..cd291c3
--- /dev/null
+++ b/includes/views/handlers/og_handler_filter_group_audience_gid.inc
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Contains the group filter for field group audience - gid.
+ */
+
+/**
+ * Field group audience - "gid" filter handler.
+ */
+class og_handler_filter_group_audience_gid extends views_handler_filter_many_to_one {
+
+  // @TODO - add extra options form to limit type and state of group entities
+  function get_value_options() {
+    $groups = og_get_all_group();
+
+    foreach($groups as $gid) {
+      $entity = entity_load_single('node', $gid);
+
+      if ($entity && og_is_group('node', $entity)) {
+        $this->value_options[$gid] = $entity->title;
+      }
+    }
+  }
+}
diff --git a/includes/views/og.views.inc b/includes/views/og.views.inc
index 9e9f530..2b05f44 100644
--- a/includes/views/og.views.inc
+++ b/includes/views/og.views.inc
@@ -42,8 +42,7 @@ class OgMembershipViewsController extends EntityDefaultViewsController {
     $data['og_membership']['gid'] = $data['og_membership']['etid'];
     $data['og_membership']['gid']['title'] = t('Group ID');
     $data['og_membership']['gid']['help'] = t('Og membership "gid" property.');
-
-
+    $data['og_membership']['gid']['filter']['handler'] = 'og_handler_filter_group_audience_gid';
 
     $data['og_membership']['og_roles'] = array(
       'title' => t('OG user roles in group'),
diff --git a/og.info b/og.info
index 28f131c..95452a5 100644
--- a/og.info
+++ b/og.info
@@ -33,6 +33,7 @@ files[] = includes/views/handlers/og_handler_field_group_permissions.inc
 
 ; Views filters
 files[] = includes/views/handlers/og_handler_filter_group_audience_state.inc
+files[] = includes/views/handlers/og_handler_filter_group_audience_gid.inc
 
 ; Views relationships
 files[] = includes/views/handlers/og_handler_relationship.inc
