diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt
index b741fd1c4..d98199beb 100644
--- a/src/libtomahawk/CMakeLists.txt
+++ b/src/libtomahawk/CMakeLists.txt
@@ -302,6 +302,7 @@ include_directories( . ${CMAKE_CURRENT_BINARY_DIR} ..
     ../../thirdparty/jdns
     ../../thirdparty/jdns/jdns
     ../../thirdparty/jdns/jdnsshared
+    ../../thirdparty/qtweetlib/src
     playlist
 )
 
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index a6c3225ff..22ca85469 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -19,6 +19,8 @@
 #include "tomahawksettings.h"
 #include "sip/SipHandler.h"
 #include "sip/twitter/tomahawkoauthtwitter.h"
+#include <qtweetaccountverifycredentials.h>
+#include <qtweetstatusupdate.h>
 
 
 static QString
@@ -67,11 +69,13 @@ SettingsDialog::SettingsDialog( QWidget *parent )
     {
         ui->twitterStatusLabel->setText("Status: No saved credentials");
         ui->twitterAuthenticateButton->setText( "Authenticate" );
+        ui->twitterInstructionsBox->setVisible( false );
     }
     else
     {
         ui->twitterStatusLabel->setText("Status: Credentials saved");
         ui->twitterAuthenticateButton->setText( "Re-authenticate" );
+        ui->twitterInstructionsBox->setVisible( true );
     }
 
     // MUSIC SCANNER
@@ -298,6 +302,7 @@ SettingsDialog::authenticateTwitter()
         s->setTwitterOAuthTokenSecret( twitAuth->oauthTokenSecret() );
         ui->twitterStatusLabel->setText("Status: Credentials saved");
         ui->twitterAuthenticateButton->setText( "Re-authenticate" );
+        ui->twitterInstructionsBox->setVisible( true );
     }
     else
     {
@@ -306,9 +311,56 @@ SettingsDialog::authenticateTwitter()
         s->setTwitterOAuthTokenSecret( QString() );
         ui->twitterStatusLabel->setText("Status: No saved credentials");
         ui->twitterAuthenticateButton->setText( "Authenticate" );
+        ui->twitterInstructionsBox->setVisible( false );
     }
 }
 
+void
+SettingsDialog::startPostGotTomahawkStatus()
+{
+    qDebug() << "Posting Got Tomahawk status";
+    TomahawkSettings* s = TomahawkSettings::instance();
+    if ( s->twitterOAuthToken().isEmpty() || s->twitterOAuthTokenSecret().isEmpty() )
+    {
+        QMessageBox::critical( 0, QString("Tweetin' Error"), QString("Your saved credentials could not be loaded.\nYou may wish to try re-authenticating.") );
+        return;
+    }
+    TomahawkOAuthTwitter *twitAuth = new TomahawkOAuthTwitter( this );
+    twitAuth->setNetworkAccessManager( TomahawkUtils::nam() );
+    twitAuth->setOAuthToken( s->twitterOAuthToken().toLatin1() );
+    twitAuth->setOAuthTokenSecret( s->twitterOAuthTokenSecret().toLatin1() );
+    QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( twitAuth, this );
+    connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( postGotTomahawkStatusAuthVerifyReply(const QTweetUser &) ) );
+    credVerifier->verify();
+}
+
+void
+SettingsDialog::postGotTomahawkStatusAuthVerifyReply( const QTweetUser &user )
+{
+    if ( user.id() == 0 )
+    {
+        QMessageBox::critical( 0, QString("Tweetin' Error"), QString("Your saved credentials could not be verified.\nYou may wish to try re-authenticating.") );
+        return;
+    }
+    TomahawkSettings* s = TomahawkSettings::instance();
+    TomahawkOAuthTwitter *twitAuth = new TomahawkOAuthTwitter( this );
+    twitAuth->setNetworkAccessManager( TomahawkUtils::nam() );
+    twitAuth->setOAuthToken( s->twitterOAuthToken().toLatin1() );
+    twitAuth->setOAuthTokenSecret( s->twitterOAuthTokenSecret().toLatin1() );
+    QTweetStatusUpdate *statUpdate = new QTweetStatusUpdate( twitAuth, this );
+    connect( statUpdate, SIGNAL( postedStatus(const QTweetStatus &) ), SLOT( postGotTomahawkStatusUpdateReply(const QTweetStatus &) ) );
+    statUpdate->post( QString( "Got Tomahawk?" ) );
+}
+
+void
+SettingsDialog::postGotTomahawkStatusUpdateReply( const QTweetStatus& status )
+{
+    if ( status.id() == 0 )
+        QMessageBox::critical( 0, QString("Tweetin' Error"), QString("There was an error posting your status -- sorry!") );
+    else
+        QMessageBox::information( 0, QString("Tweeted!"), QString("Your tweet has been posted!") );
+}
+
 ProxyDialog::ProxyDialog( QWidget *parent )
     : QDialog( parent )
     , ui( new Ui::ProxyDialog )
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index dc82f03be..1912ce730 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -3,6 +3,9 @@
 
 #include <QDialog>
 
+#include <qtweetstatus.h>
+#include <qtweetuser.h>
+
 class QNetworkReply;
 
 namespace Ui
@@ -52,6 +55,9 @@ private slots:
     void onLastFmFinished();
     
     void authenticateTwitter();
+    void startPostGotTomahawkStatus();
+    void postGotTomahawkStatusAuthVerifyReply( const QTweetUser &user );
+    void postGotTomahawkStatusUpdateReply( const QTweetStatus &status );
 
     void addScriptResolver();
     void scriptSelectionChanged();
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui
index 4009156eb..30701062e 100644
--- a/src/settingsdialog.ui
+++ b/src/settingsdialog.ui
@@ -29,7 +29,7 @@
       </sizepolicy>
      </property>
      <property name="currentIndex">
-      <number>0</number>
+      <number>2</number>
      </property>
      <widget class="QWidget" name="tabJabber">
       <attribute name="title">
@@ -462,6 +462,35 @@ When you press the button your web browser will launch and take you to Twitter.c
          </item>
         </layout>
        </item>
+       <item>
+        <widget class="QGroupBox" name="twitterInstructionsBox">
+         <property name="title">
+          <string>Instructions</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_12">
+          <item>
+           <layout class="QVBoxLayout" name="twitterInstructionsVLayout">
+            <item>
+             <widget class="QLabel" name="twitterInstructionsInfoLabel">
+              <property name="text">
+               <string>How it works is simple: just tweet &quot;Got Tomahawk?&quot; and be (very) patient. It can take a bit.
+
+</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="twitterTweetGotTomahawkButton">
+              <property name="text">
+               <string>Press here if you'd like to have Tomahawk tweet this for you</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
        <item>
         <spacer name="twitterVertSpacer">
          <property name="orientation">
@@ -769,5 +798,21 @@ When you press the button your web browser will launch and take you to Twitter.c
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>twitterTweetGotTomahawkButton</sender>
+   <signal>pressed()</signal>
+   <receiver>SettingsDialog</receiver>
+   <slot>startPostGotTomahawkStatus()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>310</x>
+     <y>313</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>310</x>
+     <y>216</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
 </ui>
diff --git a/src/sip/twitter/tomahawkoauthtwitter.h b/src/sip/twitter/tomahawkoauthtwitter.h
index bef823c36..5d56b889a 100644
--- a/src/sip/twitter/tomahawkoauthtwitter.h
+++ b/src/sip/twitter/tomahawkoauthtwitter.h
@@ -11,7 +11,7 @@ class SIPDLLEXPORT TomahawkOAuthTwitter : public OAuthTwitter
     
 public:
     TomahawkOAuthTwitter( QObject *parent = 0 );
-        
+
     ~TomahawkOAuthTwitter() {}
     
 protected: