diff --git a/tweet.info b/tweet.info
index 8d978ba..a69faa1 100644
--- a/tweet.info
+++ b/tweet.info
@@ -6,3 +6,5 @@ configure = admin/config/tweet
 files[] = tweet.admin.inc
 files[] = tweet.install
 files[] = tweet.module
+files[] = views/tweet_handler_field_button.inc
+
diff --git a/tweet.module b/tweet.module
index 174b581..8b3ed65 100644
--- a/tweet.module
+++ b/tweet.module
@@ -361,3 +361,13 @@ function _tweet_node_types() {
 function _tweet_text($site) {
   return str_replace('[site]', check_plain($site), variable_get('tweet_text', t('Post to [site]')));
 }
+
+/**
+ * Implements hook_views_api().
+ */
+function tweet_views_api() {
+  return array(
+    'api' => '2.0',
+  );
+}
+
diff --git a/tweet.views.inc b/tweet.views.inc
new file mode 100644
index 0000000..d99f0a7
--- /dev/null
+++ b/tweet.views.inc
@@ -0,0 +1,50 @@
+<?php
+
+
+
+/**
+ * @file
+ * tweet.views.inc
+ */
+
+/**
+ * Implements hook_views_data().
+ */
+function tweet_views_data() {
+  $data = array();
+
+  $data['tweet']['table']['group'] = t('tweet');
+
+  $data['tweet']['table']['join'] = array(
+    '#global' => array(),
+  );
+
+  $data['tweet']['tweet'] = array(
+    'group' => t('tweet button'),
+    'field' => array(
+      'title' => t('tweet button'),
+      'help' => t('Provide the tweet button as a view field'),
+      'handler' => 'tweet_handler_field_button',
+    ),
+  );
+
+  return $data;
+}
+
+/**
+ * Implements hook_views_handlers() to register all of the basic handlers().
+ * views uses.
+ */
+function tweet_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'tweet') . '/views',
+    ),
+    'handlers' => array(
+      'tweet_handler_field_like' => array(
+        'parent' => 'views_handler_field_node',
+      ),
+    ),
+  );
+}
+
diff --git a/views/tweet_handler_field_button.inc b/views/tweet_handler_field_button.inc
new file mode 100644
index 0000000..f82d4fa
--- /dev/null
+++ b/views/tweet_handler_field_button.inc
@@ -0,0 +1,62 @@
+<?php
+
+
+
+/**
+ * @file
+ * Views handler tweet widget.
+ *
+ * This is a fake field that does not query anything.
+ */
+
+/**
+ * Field handler to provie the tweet widget
+ * Inherit from views_handler_field_node so we get the nid for free
+ * @ingroup views_field_handlers
+ */
+class tweet_handler_field_button extends views_handler_field_node {
+
+  /**
+   * query() override to not query this fake field.
+   */
+  function query() {
+    $this->ensure_my_table();
+  }
+
+  /**
+   * the tweet options form
+   */
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    // Remove irrelevant controls / settings.
+    unset($form['exclude']);
+    unset($form['empty']);
+    unset($form['empty_zero']);
+    unset($form['hide_empty']);
+    unset($form['link_to_node']);
+    unset($form['alter']);
+  }
+  /**
+   * Render the tweet field
+   */
+  function render($values) {
+    $link_type = variable_get('tweet_node', 'icon');
+    
+    if ($link_type != 'none') {
+      $links = array();
+      foreach (tweet_sites(TRUE) as $site => $info) {
+        $links['tweet_' . $site] = _tweet_to_twitter($site, $link_type, '', $values->nid);
+      }
+      $output = theme('links', array(
+        '#theme' => 'links',
+        '#links' => $links,
+        '#attributes' => array('class' => array('links', 'inline')),
+      ));
+    }
+    
+    return $output;
+
+  }
+}
+
