diff --git tweet.module tweet.module
index 9c6fdbf..af29120 100644
--- tweet.module
+++ tweet.module
@@ -28,14 +28,18 @@ function tweet_link($type, $node = NULL, $teaser = FALSE) {
     if (!$teaser) {
       $link_type = variable_get('tweet_node', 'icon');
       if ($link_type != 'none') {
-        $links['tweet'] = _tweet_to_twitter($link_type, '', $node->nid);
+        foreach (tweet_services() as $service => $service_definition) {
+          $links[$service] = _tweet_to_twitter($service, $link_type, '', $node->nid);
+        }
         return $links;
       }
     }
     else {
       $link_type = variable_get('tweet_teaser', 'none');
       if ($link_type != 'none') {
-        $links['tweet'] = _tweet_to_twitter($link_type, '', $node->nid);
+        foreach (tweet_services() as $service => $service_definition) {
+          $links[$service] = _tweet_to_twitter($service, $link_type, '', $node->nid);
+        }
         return $links;
       }
     }
@@ -68,7 +72,10 @@ function tweet_block($op = 'list', $delta = 0, $edit = NULL) {
   }
   elseif ($op == 'view' && $delta == 'tweet') {
     $block['subject'] = t('Tweet this');
-    $block['content'] = tweet_to_twitter();
+    foreach (tweet_services() as $service => $service_definition) {
+      $links[$service] = tweet_to_twitter($service);
+    }
+    $block['content'] = theme('item_list', $links);
     return $block;
   }
 }
@@ -76,15 +83,46 @@ function tweet_block($op = 'list', $delta = 0, $edit = NULL) {
 /**
  * Returns a link from _tweet_to_twitter().
  */
-function tweet_to_twitter($type = '', $format = '', $nid = '') {
+function tweet_to_twitter($service = 'twitter', $type = '', $format = '', $nid = '') {
   if (!$type && variable_get('tweet_node', 'icon') == 'none') {
     $type = 'icon_text';
   }
-  $array = _tweet_to_twitter($type, $format, $nid);
+  $array = _tweet_to_twitter($service, $type, $format, $nid);
   return l($array['title'], $array['href'], array('attributes' => $array['attributes'], 'query' => $array['query'], 'absolute' => TRUE, 'html' => $array['html']));
 }
 
 /**
+ * Load availible tweet services.
+ *
+ * @param $reset
+ *   Reset the static cache and rebuild it.
+ */
+function tweet_services($reset = FALSE) {
+  static $services = array();
+  if ($reset || empty($services)) {
+    $services = module_invoke_all('tweet_services');
+    drupal_alter('tweet_services');
+  }
+  return $services;
+}
+
+/**
+ * Implements hook_tweet_services().
+ */
+function tweet_tweet_services() {
+  $image_location = drupal_get_path('module', 'tweet') .'/icon.png';
+ $text = (variable_get('tweet_text', t('Post to Twitter')) == t('Post to Twitter')) ? t('Post to Twitter') : variable_get('tweet_text', t('Post to Twitter'));
+  return array(
+    'twitter' => array(
+      'path' => 'http://twitter.com/home',
+      'query_status_key' => 'status',
+      'text' => $text,
+      'image' => theme('image', variable_get('tweet_image', $image_location), $text, $text)
+    ),
+  );
+}
+
+/**
  * Creates a link to post a URL and optionally title to twitter.  Uses the
  * current page by default.
  *
@@ -106,9 +144,12 @@ function tweet_to_twitter($type = '', $format = '', $nid = '') {
  * @return
  *   A themed link to post the specified or current page to twitter.
  */
-function _tweet_to_twitter($type = '', $format = '', $nid = '') {
+function _tweet_to_twitter($service = 'twitter', $type = '', $format = '', $nid = '') {
   $q = '';
   $node_tags = '';
+  $services = tweet_services();
+  $service = $services[$service];
+
   if (is_numeric($nid)) {
     $q = url('node/'. $nid, array('absolute' => TRUE));
     if (module_exists('taxonomy')) {
@@ -135,10 +176,9 @@ function _tweet_to_twitter($type = '', $format = '', $nid = '') {
   }
   $tweet = _tweet_process($format, array('[url]' => $url, '[title]' => $title, '[node-tags]' => check_plain($node_tags)));
 
-  $path = 'http://twitter.com/home';
-  $text = (variable_get('tweet_text', t('Post to Twitter')) == t('Post to Twitter')) ? t('Post to Twitter') : variable_get('tweet_text', t('Post to Twitter'));
-  $image_location = drupal_get_path('module', 'tweet') .'/icon.png';
-  $image = theme('image', variable_get('tweet_image', $image_location), $text, $text);
+  $path = $service['path'];
+  $text = $service['text'];
+  $image = $service['image'];
   if (!$type) {
     //Note that $type can be 'none', in which case nothing shows up.
     $type = variable_get('tweet_node', 'icon');
@@ -161,7 +201,7 @@ function _tweet_to_twitter($type = '', $format = '', $nid = '') {
     $path = $_GET['q'];
     $tweet = 'sent';
   }
-  return array('title' => $show, 'href' => $path, 'attributes' => $attributes, 'query' => 'status='. $tweet, 'html' => TRUE);
+  return array('title' => $show, 'href' => $path, 'attributes' => $attributes, 'query' => $service['query_status_key'] . '='. $tweet, 'html' => TRUE);
 }
 
 /**
@@ -248,4 +288,4 @@ function _tweet_node_types() {
   $a = array_keys(node_get_types());
   $return = drupal_map_assoc($a);
   return $return;
-}
\ No newline at end of file
+}
