diff --git a/commons_follow.info b/commons_follow.info
index b543983..4037ec3 100644
--- a/commons_follow.info
+++ b/commons_follow.info
@@ -1,13 +1,21 @@
 name = Commons Follow
 description = Views and Field integration for Commons Following functionality.
 core = 7.x
-package = "Commons - Building blocks"
+package = Commons - Building blocks
 php = 5.2.4
+project = commons_follow
 dependencies[] = entityreference
 dependencies[] = features
+dependencies[] = message_subscribe
+dependencies[] = strongarm
+datestamp = 1350676268
+features[ctools][] = strongarm:strongarm:1
 features[features_api][] = api:1
 features[field_base][] = field_target_comments
 features[field_base][] = field_target_nodes
 features[field_base][] = field_target_users
+features[variable][] = message_subscribe_flag_prefix
 files[] = includes/views/commons_follow.views.inc
 files[] = includes/views/handlers/commons_follow_handler_filter_follow.inc
+files[] = includes/views/handlers/commons_follow_plugin_argument_default_node.inc
+files[] = includes/views/handlers/commons_follow_user_follow_filter.inc
diff --git a/commons_follow.module b/commons_follow.module
index 444f3bf..36fbe0a 100644
--- a/commons_follow.module
+++ b/commons_follow.module
@@ -1,6 +1,73 @@
 <?php
 
 /**
+ * Get all node IDs relevant to what the user ordered.
+ *
+ * @param $account
+ *   The user being checked. Defaults to the current user.
+ * @param $options
+ *   Array. Includes options to alter the query. Options available are used
+ *   within the hook implementations.
+ *
+ * @return
+ *   Array of node IDs.
+ */
+function commons_follow_get_nids($account = NULL, $options = array()) {
+  if (empty($account)) {
+    global $user;
+    $account = clone $user;
+  }
+
+  $nids = array();
+  // We don't use module_invoke_all() is we want to retain the array keys,
+  // which are the user IDs.
+  foreach (module_implements('commons_follow_get_nids') as $module) {
+    $function = $module . '_commons_follow_get_nids';
+    $result = $function($account, $options);
+    foreach ($result as $nid) {
+      $nids[$nid] = $nid;
+    }
+  }
+  return $nids;
+}
+
+
+
+/**
+ * Get subscriptions flag IDs.
+ *
+ * @param $content_type
+ *   Optional. The type of content for which to load the flags. Usually 'node'.
+ * @param $content_subtype
+ *   Optional. The node type for which to load the flags.
+ * @param $account
+ *   Optional. The user accont to filter available flags. If not set, all
+ *   flags for will this node will be returned.
+ * @param $reset
+ *   Optional. Reset the internal query cache.
+ *
+ * @return $flags
+ *   An array of the structure [fid] = flag_object.
+ *
+ * @see flag_get_flags()
+ */
+function commons_follow_get_subscription_flags_ids($content_type = NULL, $content_subtype = NULL, $account = NULL, $reset = FALSE) {
+  if (!module_exists('message_subscribe')) {
+    // Requires message_subscribe module.
+    return;
+  }
+  $flags = message_subscribe_flag_get_flags($content_type, $content_subtype, $account, $reset);
+
+  $flag_ids = array();
+  foreach ($flags as $flag) {
+    $flag_ids[] = $flag->fid;
+  }
+  return $flag_ids;
+}
+
+///////////////////
+
+/**
  * Implementation of hook_views_api().
  */
 function commons_follow_views_api() {
@@ -78,8 +145,8 @@ function commons_follow_get_followed_message_ids($account = NULL) {
   foreach ($followed_content as $key => $content) {
     $function = $key . '_commons_follow_get_message_ids';
     if (function_exists($function)) {
-      $function($followed_mids, $followed_content);  
-    }    
+      $function($followed_mids, $followed_content);
+    }
   }
   return $followed_mids;
 }
diff --git a/commons_follow.strongarm.inc b/commons_follow.strongarm.inc
new file mode 100644
index 0000000..999ad58
--- /dev/null
+++ b/commons_follow.strongarm.inc
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @file
+ * commons_follow.strongarm.inc
+ */
+
+/**
+ * Implements hook_strongarm().
+ */
+function commons_follow_strongarm() {
+  $export = array();
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'message_subscribe_flag_prefix';
+  $strongarm->value = 'commons_follow';
+  $export['message_subscribe_flag_prefix'] = $strongarm;
+
+  return $export;
+}
diff --git a/commons_follow_group/commons_follow_group.info b/commons_follow_group/commons_follow_group.info
index 1a5fdfb..5274f8c 100644
--- a/commons_follow_group/commons_follow_group.info
+++ b/commons_follow_group/commons_follow_group.info
@@ -15,3 +15,10 @@ version = ""
 project = "commons_follow_group"
 datestamp = "1345573858"
 
+
+
+; Information added by drush on 2012-10-19
+version = ""
+project = "commons_follow"
+datestamp = "1350676268"
+
diff --git a/commons_follow_node/commons_follow_node.info b/commons_follow_node/commons_follow_node.info
index 97013b2..5a01a03 100644
--- a/commons_follow_node/commons_follow_node.info
+++ b/commons_follow_node/commons_follow_node.info
@@ -15,3 +15,10 @@ version = ""
 project = "commons_follow_node"
 datestamp = "1345573856"
 
+
+
+; Information added by drush on 2012-10-19
+version = ""
+project = "commons_follow"
+datestamp = "1350676268"
+
diff --git a/commons_follow_node/commons_follow_node.module b/commons_follow_node/commons_follow_node.module
index f0967fe..b43251e 100644
--- a/commons_follow_node/commons_follow_node.module
+++ b/commons_follow_node/commons_follow_node.module
@@ -6,6 +6,50 @@
 
 include_once 'commons_follow_node.features.inc';
 
+
+
+/**
+ * Implements hook_commons_follow_get_nids().
+ */
+function commons_follow_node_commons_follow_get_nids($account, $options) {
+  // Get all flaggings from flags that belong to Message-subscribe, that
+  // reference the node entity-type.
+
+  // Get subscribe flag IDs.
+  $flag_ids = commons_follow_get_subscription_flags_ids('node');
+
+  if (empty($flag_ids)) {
+    return array();
+  }
+
+  $query = db_select('flag_content', 'f');
+
+  if (!empty($options['range'])) {
+    $query->range(0, $options['range']);
+  }
+
+  $result = $query
+    ->addTag('node_access')
+    ->condition('fid', $flag_ids, 'IN')
+    ->condition('uid', $account->uid, '=')
+    ->condition('content_type', 'node', '=')
+    ->fields('f',array('content_id'))
+    ->execute()
+    ->fetchAll();
+
+  $nids = array();
+  foreach($result as $row) {
+    $nids[] = (integer) $row->content_id;
+  }
+
+  return $nids;
+}
+
+
+///////////////
+
+
+
 /**
 * Implements hook_commons_follow_get_message_ids().
 */
@@ -41,4 +85,4 @@ function commons_follow_node_commons_follow_get_following_uids(&$following_uids,
   foreach ($result as $this_result) {
     $following_uids[$this_result->uid] = $this_result->uid;
   }
-}
\ No newline at end of file
+}
diff --git a/commons_follow_term/commons_follow_term.info b/commons_follow_term/commons_follow_term.info
index 203d382..883c538 100644
--- a/commons_follow_term/commons_follow_term.info
+++ b/commons_follow_term/commons_follow_term.info
@@ -14,3 +14,10 @@ version = ""
 project = "commons_follow_term"
 datestamp = "1345573856"
 
+
+
+; Information added by drush on 2012-10-19
+version = ""
+project = "commons_follow"
+datestamp = "1350676268"
+
diff --git a/commons_follow_term/commons_follow_term.module b/commons_follow_term/commons_follow_term.module
index 38ded16..8989937 100644
--- a/commons_follow_term/commons_follow_term.module
+++ b/commons_follow_term/commons_follow_term.module
@@ -6,12 +6,73 @@
 
 include_once 'commons_follow_term.features.inc';
 
+
+
+/**
+ * Implements hook_commons_follow_get_nids().
+ */
+function commons_follow_term_commons_follow_get_nids($account, $options) {
+  // Get all flaggings from flags that belong to Message-subscribe, that
+  // reference the taxonomy-term entity-type.
+  $flag_ids = commons_follow_get_subscription_flags_ids('taxonomy_term');
+
+  if (empty($flag_ids)) {
+    return array();
+  }
+
+  // Get user's flagged terms.
+  $query = db_select('flag_content', 'f');
+  $result = $query
+    ->condition('fid', $flag_ids, 'IN')
+    ->condition('uid', $account->uid, '=')
+    ->condition('content_type', 'taxonomy_term', '=')
+    ->fields('f',array('content_id'))
+    ->execute()
+    ->fetchAll();
+
+  if (empty($result)) {
+    // No term flags.
+    return array();
+  }
+
+  $tids = array();
+  foreach($result as $row) {
+    $tids[] = (integer) $row->content_id;
+  }
+
+  // Get IDs of nodes tagged by the specified terms.
+  $query = db_select('taxonomy_index', 't');
+
+  if (!empty($options['range'])) {
+    $query->range(0, $options['range']);
+  }
+
+  $result = $query
+    ->addTag('node_access')
+    ->condition('tid', $tids, 'IN')
+    ->fields('t',array('nid'))
+    ->groupBy('nid')
+    ->execute()
+    ->fetchAll();
+
+  // Return the node IDs.
+  $nids = array();
+  foreach($result as $row) {
+    $nids[] = (integer) $row->nid;
+  }
+
+  return $nids;
+}
+
+
+//////////
+
 /**
 * Implements hook_node_view_alter().
 */
 function commons_follow_term_node_view_alter(&$build) {
-  // TODO: 
-  // If the user is already subscribed to terms covering this node, 
+  // TODO:
+  // If the user is already subscribed to terms covering this node,
   // deny her the ability to subscribe to the individual node.
 }
 
diff --git a/commons_follow_ui/commons_follow_ui.info b/commons_follow_ui/commons_follow_ui.info
index ad60154..2dd67ab 100644
--- a/commons_follow_ui/commons_follow_ui.info
+++ b/commons_follow_ui/commons_follow_ui.info
@@ -1,4 +1,10 @@
 name = "Commons Follow (User interface)"
 description = "User interface for the Commons Follow functionality"
 core = 7.x
-package = Commons
\ No newline at end of file
+package = Commons
+
+; Information added by drush on 2012-10-19
+version = ""
+project = "commons_follow"
+datestamp = "1350676268"
+
diff --git a/commons_follow_user/commons_follow_user.info b/commons_follow_user/commons_follow_user.info
index e2aaf20..29254b5 100644
--- a/commons_follow_user/commons_follow_user.info
+++ b/commons_follow_user/commons_follow_user.info
@@ -17,3 +17,10 @@ features[flag][] = commons_follow_user
 features[message_type][] = commons_follow_user_user_followed
 features[views_view][] = commons_follow_user_followers
 features[views_view][] = commons_follow_user_following
+
+
+; Information added by drush on 2012-10-19
+version = ""
+project = "commons_follow"
+datestamp = "1350676268"
+
diff --git a/commons_follow_user/commons_follow_user.module b/commons_follow_user/commons_follow_user.module
index 59b2d79..d9ea646 100644
--- a/commons_follow_user/commons_follow_user.module
+++ b/commons_follow_user/commons_follow_user.module
@@ -6,6 +6,66 @@
 
 include_once 'commons_follow_user.features.inc';
 
+
+
+/**
+ * Implements hook_commons_follow_get_nids().
+ */
+function commons_follow_user_commons_follow_get_nids($account, $options) {
+  // Get all flaggings from flags that belong to Message-subscribe, that
+  // reference the node entity-type.
+
+  // Get subscribe flag IDs.
+  $flag_ids = commons_follow_get_subscription_flags_ids('user');
+
+  if (empty($flag_ids)) {
+    return array();
+  }
+
+  // Get flagged user IDs.
+  $query = db_select('flag_content', 'f');
+  $result = $query
+    ->condition('fid', $flag_ids, 'IN')
+    ->condition('uid', $account->uid, '=')
+    ->condition('content_type', 'user', '=')
+    ->fields('f',array('content_id'))
+    ->execute()
+    ->fetchAll();
+
+  if (empty($result)) {
+    // No user flags.
+    return array();
+  }
+
+  $uids = array();
+  foreach($result as $row) {
+    $uids[] = (integer) $row->content_id;
+  }
+
+  // Get the user's node IDs.
+  $query = new EntityFieldQuery();
+
+  if (!empty($options['range'])) {
+    $query->range(0, $options['range']);
+  }
+
+  $result = $query
+    ->entityCondition('entity_type', 'node')
+    ->propertyCondition('uid', $uids, 'IN')
+    ->execute();
+
+  $nids = array();
+  foreach ($result['node'] as $nid => $row) {
+    $nids[] = $nid;
+  }
+
+  return $nids;
+}
+
+
+///////////////
+
+
 /**
 * Implements hook_system_info_alter().
 */
@@ -67,9 +127,9 @@ function commons_follow_user_commons_follow_get_message_ids(&$followed_mids, $fo
   }
   // Generate a list of message IDs where message.uid OR any of the referenced
   // target users are ones that the current user is following.
-  $result = db_query("SELECT m.mid AS mid 
-    FROM {message} m 
-    LEFT JOIN {field_data_field_target_users} tu ON m.mid=tu.entity_id 
+  $result = db_query("SELECT m.mid AS mid
+    FROM {message} m
+    LEFT JOIN {field_data_field_target_users} tu ON m.mid=tu.entity_id
     WHERE tu.field_target_users_target_id IN(:uids)
     OR m.uid IN (:uids)",
     array(':uids' => array_values($followed_content['commons_follow_user'])));
@@ -92,9 +152,9 @@ function commons_follow_user_commons_follow_get_following_uids(&$following_uids,
       $target_uids[] = $field['target_id'];
     }
   }
-  
+
   $result = db_query("SELECT fc.uid FROM {flag_content} fc WHERE fc.content_type = 'user' AND fc.content_id IN(:target_uids) AND fc.fid IN (:commons_follow_flag_ids)", array(':target_uids' => array_keys($target_uids), ':commons_follow_flag_ids' => array_keys(commons_follow_get_flag_ids())));
   foreach ($result as $this_result) {
     $following_uids[$this_result->uid] = $this_result->uid;
   }
-}
\ No newline at end of file
+}
diff --git a/includes/views/commons_follow.views.inc b/includes/views/commons_follow.views.inc
index 672d7f0..698e0da 100644
--- a/includes/views/commons_follow.views.inc
+++ b/includes/views/commons_follow.views.inc
@@ -12,4 +12,39 @@ function commons_follow_views_data_alter(&$data) {
       'real field' => 'mid',
     ),
   );
-}
\ No newline at end of file
+}
+
+
+
+/**
+ * Implements hook_views_plugins().
+ */
+function commons_follow_views_plugins() {
+  // This handler requires message_subscribe module.
+  return array(
+    'argument default' => array(
+      'commons_follow_node' => array(
+        'title' => t('The node IDs the user is subscribed to'),
+        'handler' => 'commons_follow_plugin_argument_default_node',
+      ),
+    ),
+  );
+}
+
+/**
+ * Implements hook_views_data().
+ */
+function commons_follow_views_data() {
+  $data['node']['cf_user_follow'] = array(
+    'title' => t('User Follow'), // The item it appears as on the UI,
+    'help' => t('Whether the user is following this content.'), // The help that appears on the UI,
+     // Information for displaying a title as a field
+    'filter' => array(
+      'handler' => 'commons_follow_user_follow_filter',
+      'label' => t('Following'),
+      'type' => 'yes-no',
+    ),
+  );
+
+  return $data;
+}
diff --git a/includes/views/handlers/commons_follow_plugin_argument_default_node.inc b/includes/views/handlers/commons_follow_plugin_argument_default_node.inc
new file mode 100644
index 0000000..9f0735a
--- /dev/null
+++ b/includes/views/handlers/commons_follow_plugin_argument_default_node.inc
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @file
+ * Holds the class defining the Views plugin that returns the node IDS that a
+ * user has subscribed to.
+ */
+
+class commons_follow_plugin_argument_default_node extends views_plugin_argument_default {
+
+  /**
+   * List the options relevant for this plugin.
+   */
+  function option_definition() {
+    $options = parent::option_definition();
+
+    return $options;
+  }
+
+  /**
+   * Provide the default form for setting options.
+   */
+  function options_form(&$form, &$form_state) {
+
+  }
+
+  /**
+   * Get the default argument.
+   */
+  function get_argument() {
+    if (!$nids = commons_follow_get_nids()) {
+      return FALSE;
+    }
+
+    return implode(',', $nids);
+  }
+}
diff --git a/includes/views/handlers/commons_follow_user_follow_filter.inc b/includes/views/handlers/commons_follow_user_follow_filter.inc
new file mode 100644
index 0000000..933b30a
--- /dev/null
+++ b/includes/views/handlers/commons_follow_user_follow_filter.inc
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_filter_boolean_operator_string.
+ */
+
+/**
+ * Views filter that toggles between flagged and unflagged content.
+ */
+class commons_follow_user_follow_filter extends views_handler_filter_boolean_operator {
+
+  function query() {
+    foreach ($this->view->argument as $argument_name => $argument) {
+
+      if ($argument->options['default_argument_type'] == 'commons_follow_node') {
+        // The argument that toggles 'following' or 'not following' display.
+        $this->view->argument[$argument_name]->options['not'] = !$this->value;
+        break;
+      }
+    }
+  }
+}
