diff --git a/privatemsg_groups/README b/privatemsg_groups/README
deleted file mode 100644
index 3e8c40c..0000000
--- a/privatemsg_groups/README
+++ /dev/null
@@ -1,5 +0,0 @@
-Must be enabled at least "write privatemsg to own groups" to be able to send messages.
-
-By default, activating the option before, all the users that belong to a group are able to send messages to group, to restrict this settings only to administrator, please go to "admin/settings/messages" and check "Restrict access to group administrators" option.
-
-Author: paolomainardi@gmail.com (http://drupal.org/user/302937)
diff --git a/privatemsg_groups/privatemsg_groups.info b/privatemsg_groups/privatemsg_groups.info
deleted file mode 100644
index bb56b30..0000000
--- a/privatemsg_groups/privatemsg_groups.info
+++ /dev/null
@@ -1,8 +0,0 @@
-name = Privatemsg Groups
-description = Allows to send message to all members of a group.
-package = Mail
-core = 6.x
-dependencies[] = privatemsg
-dependencies[] = og
-
-
diff --git a/privatemsg_groups/privatemsg_groups.module b/privatemsg_groups/privatemsg_groups.module
deleted file mode 100644
index bc6426e..0000000
--- a/privatemsg_groups/privatemsg_groups.module
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-
-/**
- * @file
- * Allows to send messages to all members of a group.
- */
-
-/**
- * Implements hook_perm().
- */
-function privatemsg_groups_perm() {
-  $perms = array('write privatemsg to all groups', 'write privatemsg to own groups');
-  return $perms;
-}
-
-
-/**
- * Implements hook_theme().
- */
-function privatemsg_groups_theme() {
-  return array(
-    'privatemsg_groups_format' => array(
-      'arguments' => array('group' => NULL, 'options' => array()),
-    ),
-  );
-}
-
-/**
- * Implements hook_privatemsg_recipient_types_info().
- */
-function privatemsg_groups_privatemsg_recipient_type_info() {
-  return array(
-    'group' => array(
-      'name' => t('Group'),
-      'description' => t('Enter the name of a group to write a message to all users that are suscribed to.'),
-      'load' => 'privatemsg_groups_load_multiple',
-      'format' => 'privatemsg_groups_format',
-      'autocomplete' => 'privatemsg_groups_autocomplete',
-      'generate recipients' => 'privatemsg_groups_load_recipients',
-      'count' => 'privatemsg_groups_count_recipients',
-      'write callback' => 'privatemsg_groups_access',
-      'view callback' => 'privatemsg_groups_access',
-    ),
-  );
-}
-
-/**
- * Implements hook_form_FORM_ID_alter().
- */
-function privatemsg_groups_form_privatemsg_admin_settings_alter(&$form, &$form_state) {
-  $form['groups'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Privatemsg groups'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-    '#weight' => 25,
-  );
-
-  $form['groups']['privatemsg_group_admin_grant'] = array(
-    '#title' => t('Restrict access to group administrators'),
-    '#type'  => 'checkbox',
-    '#default_value' => variable_get('privatemsg_group_admin_grant', 1),
-    '#description' => t("Enabling this setting will restrict message sending only to group administrator."),
-    '#weight' => -4,
-  );
-}
-
-/**
- * Permission check for group recipients.
- */
-function privatemsg_groups_access($recipient) {
-  global $user;
-  
-  // Check if user has permission to write to all groups.
-  if (user_access('write privatemsg to all groups')) {
-    return TRUE;
-  }
-
-  // Check if user has permission to write to own groups.
-  if (!user_access('write privatemsg to own groups')) {
-    return FALSE;
-  }
-
-  if ($recipient) {
-    // extract group nid from recipient, check if is an object or the nid passed by autocomplete function
-    $nid = (is_object($recipient) ? $recipient->recipient : $recipient);
-
-    // if access is restricted to group admins
-    if (variable_get('privatemsg_group_admin_grant', FALSE)) {
-      $group = node_load($nid);
-      return og_is_group_admin($group);
-    }
-    
-    return og_is_group_member($nid);
-  }
-
-  // give access only to users that have group subscriptions
-  return (bool) (count(og_get_subscriptions($user->uid)));
-}
-
-/**
- * Load a number of groups based on their nid.
- */
-function privatemsg_groups_load_multiple($nids) {
-  $result = db_query("SELECT n.title, n.nid AS recipient FROM {node} n JOIN {og} og ON n.nid = og.nid WHERE n.status = 1 AND n.nid IN (" . db_placeholders($nids) . ")", $nids);
-  $groups = array();
-  while ($group = db_fetch_object($result)) {
-    $group->type = 'group';
-    $groups[privatemsg_recipient_key($group)] = $group;
-  }
-  
-  return $groups;
-}
-
-/**
- * Format a group to be displayed as a recipient.
- */
-function theme_privatemsg_groups_format($group, $options = array()) {
-  if (!empty($options['plain'])) {
-    $name = $group->title;
-    if (!empty($options['unique'])) {
-      $name .= ' [group]';
-    }
-    return $name.'(group)';
-  }
-  return t('%group (group)', array('%group' => $group->title));
-}
-
-/**
- * Loads users of a specific group.
- */
-function privatemsg_groups_load_recipients($recipient, $limit, $offset) {
-  $recipients = array();
-  $nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
-  $result = db_query(og_list_users_sql(1, 0, null, false), $nid);
-  while ($row = db_fetch_object($result)) {
-    $recipients[] = $row->uid;
-  }
-  return $recipients;
-}
-
-/**
- * Return the number of users which have a given group.
- */
-function privatemsg_groups_count_recipients($recipient) {
-  $nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
-  return db_result(db_query(og_list_users_sql(1, 0, null, true), $nid));
-}
-
-/**
- * Provides autocomplete suggestions for groups.
- */
-function privatemsg_groups_autocomplete($fragment, $names, $limit) {
-  $query = _privatemsg_assemble_query(array('autocomplete_groups', 'privatemsg_groups'), $fragment, $names);
-  $result = db_query_range($query['query'], $fragment, 0, $limit);
-  // 3: Build proper suggestions and print.
-  $groups = array();
-  while ($group = db_fetch_object($result)) {
-    if (user_access('write privatemsg to all groups') || (privatemsg_groups_access($group->nid))) {
-      $group->type = 'group';
-      $group->recipient = $group->nid;
-      $groups[privatemsg_recipient_key($group)] = $group;
-    }
-  }
-  return $groups;
-}
-
-/**
- * Implements hook_privatemsg_name_lookup().
- */
-function privatemsg_groups_privatemsg_name_lookup($string) {
-  // Remove optonal group specifier.
-  $string = trim(str_replace(array(t('[group]'), '(group)'), '', $string));
-  $result = db_query("SELECT n.*, n.nid AS recipient FROM {node} n JOIN {og} og ON og.nid = n.nid WHERE n.title = '%s' AND n.status = 1", trim($string));
-  if ($group = db_fetch_object($result)) {
-    $group->type = 'group';
-    return array(privatemsg_recipient_key($group) => $group);
-  }
-}
-
-/**
- * Query definition to search for username autocomplete suggestions.
- *
- * @param $fragments
- *   Query fragments array.
- * @param $search
- *   Which search string is currently searched for.
- * @param $names
- *   Array of names not to be used as suggestions.
- */
-function privatemsg_groups_sql_autocomplete_groups(&$fragments, $search, $names) {
-  $fragments['primary_table'] = '{node} n';
-  $fragments['select'][] = 'n.title, n.nid';
-
-  // Escape the % to get it through the placeholder replacement.
-  // Join another table.
-  $fragments['inner_join'][] = 'JOIN {og} og ON (n.nid = og.nid)';
-  $fragments['where'][] = "n.title LIKE '%s' AND n.status = 1";
-  $fragments['query_args']['where'][] = $search .'%%';
-  if (!empty($names)) {
-    // If there are already names selected, exclude them from the suggestions.
-    $fragments['where'][] = "n.title NOT IN (". db_placeholders($names, 'text') .")";
-    $fragments['query_args']['where'] += $names;
-  }
- 
-  $fragments['order_by'][] = 'n.title ASC';
-}
diff --git a/privatemsg_groups/privatemsg_groups.test b/privatemsg_groups/privatemsg_groups.test
deleted file mode 100644
index 44202df..0000000
--- a/privatemsg_groups/privatemsg_groups.test
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-
-/**
- * @file
- * This file contains tests for the privatemsg roles module
- */
-
-/**
- * Test cases for the privatemsg_roles module.
- */
-class PrivatemsgGroupTestCase extends OgTestCase {
-
-  protected $group_user;
-  protected $super_admin;
-  protected $group_user_noperms;
-
-  public static function getInfo() {
-    return array(
-      'name' => 'Privatemsg Group functionality',
-      'description' => 'Tests sending messages to groups',
-      'group' => 'Privatemsg',
-    );
-  }
-
-  function setUp() {
-    parent::setUp('privatemsg', 'privatemsg_groups', 'privatemsg_filter', 'pm_block_user', 'og');
-    // Create a user with admin permissions.
-    $this->group_user_noperms = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
-    $this->group_user =         $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to own groups'));
-    $this->super_admin =        $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to all groups', 'administer nodes', 'administer content types', 'access administration pages', 'administer site configuration', 'administer organic groups'));
-  }
-
-   /**
-   * Helper function - create a group content.
-   *
-   * @param $type
-   *   The type name of the content type.
-   * @param $og_type
-   *   The og type - group or post.
-   * @param $edit
-   *   An array of settings to add to the defaults.
-   * @param $keys
-   *   An array with the keys that need to be present in the $node object
-   *   after node_load().
-   * @return
-   *   The newly created node id.
-   */
-  function _addOgContent($type, $og_type, $edit = array(), $keys = array()) {
-    $edit['title'] = $this->randomName(8);
-    $edit['body']= $this->randomName(32);
-    $type_hyphen = str_replace('_', '-', $type);
-
-    $this->drupalPost('node/add/'. $type_hyphen, $edit, t('Save'));
-
-    // Check that the form has been submitted.
-    $this->assertRaw(t('!type %title has been created.', array('!type' => $type, '%title' => $edit['title'])), t('%og_type created.', array('%og_type' => $og_type)));
-
-    // Assert the node has loaded properly.
-    $node = node_load(array('title' => $edit['title']));
-    $node = (array)$node;
-    $this->assertTrue($this->assertKeysExist($keys, $node), t('%og_type loaded properly.', array('%og_type' => $og_type)));
-    // Node was casted to an array.
-    $this->verbose('Group created: ' . var_export($node, TRUE));
-    return $node;
-  }
-
- /**
-  * Helper function - create a group content.
-  *
-  */
-  function _createGroup() {
-    // login as superadmin to create a group
-    $this->drupalLogin($this->super_admin);
-
-    // create a group
-    $og_group_type = $this->drupalCreateContentType();
-    variable_set('og_content_type_usage_'. $og_group_type->name, 'group');
-
-    // Create a group post content type.
-    $og_post_type = $this->drupalCreateContentType();
-    variable_set('og_content_type_usage_'. $og_post_type->name, 'group_post_standard');
-
-    // Rebuild the menu so the new content types will appear in the menu.
-    menu_rebuild();
-
-    // Create a group node.
-    $group = (object) $this->addOgGroup($og_group_type->name);
-    $this->verbose('Group : ' . var_export($group, TRUE));
-    return $group;
-  }
-
- /**
-   * Verify that deleting a user does not leave stale data behind.
-   */
-  function testDeleteUser() {
-      // Create a group node.
-    $group = (object) $this->_createGroup();
-
-    // subscribe normal user to group
-    og_subscribe_user($group->nid, $this->group_user);
-
-    $edit = array(
-      'recipient' => $group->title . '[group]',
-      'subject' => $this->randomName(10),
-      'body' => $this->randomName(50),
-    );
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('A message has been sent to @group (group).', array('@group' => $group->title)));
-
-    // check if normal user subscribed to group has received the message and have access to group write
-    $this->drupalLogin($this->group_user);
-    $this->drupalGet('messages');
-    $this->assertRaw($edit['subject'], t('Message is displayed'));
-
-    // Delete user and make sure that no recipient entries of him are left in
-    // table.
-    user_delete(array(), $this->group_user->uid);
-    $this->assertFalse(db_result(db_query_range("SELECT 1 FROM {pm_index} WHERE recipient = %d AND type IN ('group', 'hidden')", $this->group_user->uid, 0, 1)));
-  }
-  
-   /**
-   * Test the simple case of sending/receiving a message to group by priviliged users
-   */
-  function testMessageToGroup() {
-    // Create a group node.
-    $group = (object) $this->_createGroup();
-
-    // subscribe normal user to group
-    og_subscribe_user($group->nid, $this->group_user);
-
-    $edit = array(
-      'recipient' => $group->title . '[group]',
-      'subject' => $this->randomName(10),
-      'body' => $this->randomName(50),
-    );
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('A message has been sent to @group (group).', array('@group' => $group->title)));
-
-
-    // check if normal user subscribed to group has received the message and have access to group write
-    $this->drupalLogin($this->group_user);
-    $this->drupalGet('messages');
-    $this->assertRaw($edit['subject'] . '</a> <span class="marker">new</span>', t('Message is displayed as new'));
-
-    // check if user has access to group as recipient
-    $this->clickLink($edit['subject']);
-    $this->assertText(t('@group (group)', array('@group' => $group->title)));
-
-    // Reply message to group
-    $reply1 = array(
-      'body' => $this->randomName(50),
-    );
-    $this->drupalPost(NULL, $reply1, t('Send message'));
-
-    // check if the message has been sent to group
-    $this->assertText(t('@group (group).', array('@group' => $group->title)));
-
-     // try to send a new message to group (must be permitted)
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('A message has been sent to @group (group).', array('@group' => $group->title)));
-  }
-
-
-   /**
-   * Test the simple case of sending a message by an administrator
-   * and receiving and reply a message by unprilived user subscribed to group.
-   */
-  function testMessageToGroupWithNoPermissionUserToReplyToGroup() {
-    // Create a group node.
-    $group = (object) $this->_createGroup();
-
-    // subscribe normal user to group
-    og_subscribe_user($group->nid, $this->group_user_noperms);
-
-    $edit = array(
-      'recipient' => $group->title . '[group]',
-      'subject' => $this->randomName(10),
-      'body' => $this->randomName(50),
-    );
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('A message has been sent to @group (group).', array('@group' => $group->title)));
-    
-    // check if normal user subscribed to group has received the message 
-    $this->drupalLogin($this->group_user_noperms);
-    $this->drupalGet('messages');
-    $this->assertRaw($edit['subject'] . '</a> <span class="marker">new</span>', t('Message is displayed as new'));
-
-    // check if user has access to group as recipient
-    $this->clickLink($edit['subject']);
-    $this->assertNoText(t('@group (group)', array('@group' => $group->title)));
-
-
-    // Reply message to group
-    $reply1 = array(
-      'body' => $this->randomName(50),
-    );
-    $this->drupalPost(NULL, $reply1, t('Send message'));
-
-    // check if the message has been sent to group (they can't)
-    $this->assertNoText(t('@group (group).', array('@group' => $group->title)));
-
-    // try to send a message to group (must be not permitted)
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('You must include at least one valid recipient.'));
-  }
-
-
-
-  /**
-   * Test the simple case of sending a message by an administrator
-   * and receiving and reply to this message by a priviliged user subscribed to group but with "grand to admin" setting activated.
-   */
-  function testMessageToGroupWithPermOnlyGrantAdmin() {
-    variable_set('privatemsg_group_admin_grant', 1);
-
-    // Create a group node.
-    $group = (object) $this->_createGroup();
-
-    // subscribe normal user to group
-    og_subscribe_user($group->nid, $this->group_user_noperms);
-    og_subscribe_user($group->nid, $this->group_user);
-
-    $edit = array(
-      'recipient' => $group->title . '[group]',
-      'subject' => $this->randomName(10),
-      'body' => $this->randomName(50),
-    );
-    
-    $this->drupalPost('messages/new', $edit, t('Send message'));
-    $this->assertText(t('A message has been sent to @group (group).', array('@group' => $group->title)));
-
-    // check if normal user subscribed to group has received the message
-    $accounts = array($this->group_user, $this->group_user_noperms);
-    foreach ($accounts as $account) {
-      $this->drupalLogin($account);
-      $this->drupalGet('messages');
-      $this->assertRaw($edit['subject'] . '</a> <span class="marker">new</span>', t('Message is displayed as new'));
-
-      // check if user has access to group as recipient
-      $this->clickLink($edit['subject']);
-      $this->assertNoText(t('@group (group)', array('@group' => $group->title)));
-
-      // Reply message to group
-      $reply1 = array(
-        'body' => $this->randomName(50),
-      );
-      $this->drupalPost(NULL, $reply1, t('Send message'));
-
-      // check if the message has been sent to group (not permitted)
-      $this->assertNoText(t('@group (group).', array('@group' => $group->title)));
-
-      // send a new message to group (must be not permitted)
-      $this->drupalPost('messages/new', $edit, t('Send message'));
-      $this->assertText(t('You must include at least one valid recipient.'));
-    }
-  }
-}
\ No newline at end of file
