diff --git a/extensions/Makefile.am b/extensions/Makefile.am
index 642b800..a2e5823 100644
--- a/extensions/Makefile.am
+++ b/extensions/Makefile.am
@@ -15,7 +15,6 @@ EXTRA_DIST = \
     generic-types.xml \
     misc.xml \
     Channel_Handler.xml \
-    Tube_Handler.xml \
     Debug.xml \
     Channel_Interface_Conference.xml
 
diff --git a/extensions/Tube_Handler.xml b/extensions/Tube_Handler.xml
deleted file mode 100644
index 30848d9..0000000
--- a/extensions/Tube_Handler.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" ?>
-<node name="/Tube_Handler" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
-  <tp:copyright>Copyright (C) 2008 Collabora Limited</tp:copyright>
-  <tp:license xmlns="http://www.w3.org/1999/xhtml">
-    <p>This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.</p>
-
-<p>This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.</p>
-
-<p>You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
-  </tp:license>
-  <interface name="org.gnome.Empathy.TubeHandler">
-
-    <method name="HandleTube">
-      <arg direction="in" type="s" name="Bus_Name" tp:type="DBus_Bus_Name">
-        <tp:docstring>
-          The bus name of the connection and channel
-        </tp:docstring>
-      </arg>
-      <arg direction="in" type="o" name="Connection">
-        <tp:docstring>
-          The object-path of the connection that owns the channel
-        </tp:docstring>
-      </arg>
-      <arg direction="in" type="o" name="Channel">
-        <tp:docstring>
-          The object-path of the tubes channel
-        </tp:docstring>
-      </arg>
-      <arg direction="in" type="u" tp:type="Handle_Type" name="Handle_Type">
-        <tp:docstring>The type of the handle that the channel communicates
-          with, or 0 if there is no associated handle</tp:docstring>
-      </arg>
-      <arg direction="in" type="u" tp:type="Handle" name="Handle">
-        <tp:docstring>The handle that the channel communicates with,
-          or 0 if there is no associated handle</tp:docstring>
-      </arg>
-      <tp:docstring>
-        Called when a tube handler should handle a new tube within a tubes channel.
-      </tp:docstring>
-      <!-- FIXME: possible errors? -->
-    </method>
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>An interface exported by client applications which are able to
-        handle incoming tubes.</p>
-    </tp:docstring>
-  </interface>
-</node>
-<!-- vim:set sw=2 sts=2 et ft=xml: -->
-
diff --git a/extensions/misc.xml b/extensions/misc.xml
index 6eea49a..3785000 100644
--- a/extensions/misc.xml
+++ b/extensions/misc.xml
@@ -5,7 +5,6 @@
 <tp:title>Misc extensions for Empathy</tp:title>
 
 <xi:include href="Channel_Handler.xml"/>
-<xi:include href="Tube_Handler.xml"/>
 <xi:include href="Debug.xml" />
 <xi:include href="Channel_Interface_Conference.xml" />
 
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am
index 0ccd2de..e9ce936 100644
--- a/libempathy/Makefile.am
+++ b/libempathy/Makefile.am
@@ -62,7 +62,6 @@ libempathy_headers =				\
 	empathy-tp-contact-list.h		\
 	empathy-tp-file.h			\
 	empathy-tp-roomlist.h			\
-	empathy-tube-handler.h			\
 	empathy-types.h				\
 	empathy-utils.h
 
@@ -103,7 +102,6 @@ libempathy_la_SOURCES =					\
 	empathy-tp-contact-list.c			\
 	empathy-tp-file.c				\
 	empathy-tp-roomlist.c				\
-	empathy-tube-handler.c				\
 	empathy-utils.c
 
 # do not distribute generated files
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c
index 7c0068b..201e484 100644
--- a/libempathy/empathy-dispatcher.c
+++ b/libempathy/empathy-dispatcher.c
@@ -45,7 +45,6 @@
 #include "empathy-dispatcher.h"
 #include "empathy-handler.h"
 #include "empathy-utils.h"
-#include "empathy-tube-handler.h"
 #include "empathy-tp-contact-factory.h"
 #include "empathy-chatroom-manager.h"
 #include "empathy-utils.h"
@@ -63,7 +62,6 @@ typedef struct
   GHashTable *connections;
   GHashTable *outstanding_classes_requests;
   gpointer token;
-  GSList *tubes;
 
   /* channels which the dispatcher is listening "invalidated" */
   GList *channels;
diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c
deleted file mode 100644
index 2b50ec8..0000000
--- a/libempathy/empathy-tube-handler.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2008 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Authors: Xavier Claessens <xclaesse@gmail.com>
- *          Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- */
-
-#include <config.h>
-
-#include <dbus/dbus-glib.h>
-
-#include <telepathy-glib/dbus.h>
-#include <telepathy-glib/connection.h>
-#include <telepathy-glib/channel.h>
-#include <telepathy-glib/interfaces.h>
-#include <telepathy-glib/util.h>
-
-#include <extensions/extensions.h>
-
-#include "empathy-tube-handler.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include "empathy-debug.h"
-
-static void empathy_tube_handler_iface_init (EmpSvcTubeHandlerClass *klass);
-
-enum
-{
-  NEW_TUBE,
-  LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-G_DEFINE_TYPE_WITH_CODE (EmpathyTubeHandler, empathy_tube_handler,
-    G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (EMP_TYPE_SVC_TUBE_HANDLER,
-    empathy_tube_handler_iface_init))
-
-typedef struct
-{
-  EmpathyTubeHandler *thandler;
-  gchar *bus_name;
-  gchar *connection;
-  gchar *channel;
-  guint handle_type;
-  guint handle;
-  TpChannel *tube;
-} IdleData;
-
-static void
-tube_ready_destroy_notify (gpointer data)
-{
-  IdleData *idle_data = data;
-
-  g_object_unref (idle_data->tube);
-  g_free (idle_data->bus_name);
-  g_free (idle_data->connection);
-  g_free (idle_data->channel);
-  g_slice_free (IdleData, idle_data);
-}
-
-static void
-channel_ready_cb (TpChannel *channel,
-    const GError *error,
-    gpointer data)
-{
-  IdleData *idle_data = data;
-
-  if (error != NULL)
-    {
-      DEBUG ("channel has been invalidated: %s", error->message);
-      tube_ready_destroy_notify (data);
-      g_object_unref (channel);
-      return;
-    }
-
-  g_signal_emit (idle_data->thandler, signals[NEW_TUBE], 0, idle_data->tube);
-
-  g_object_unref (channel);
-}
-
-static void
-connection_ready_cb (TpConnection *connection,
-    const GError *error,
-    gpointer data)
-{
-  TpChannel *channel;
-  IdleData *idle_data = data;
-
-  if (error != NULL)
-    {
-      DEBUG ("connection has been invalidated: %s", error->message);
-      tube_ready_destroy_notify (data);
-      g_object_unref (connection);
-      return;
-    }
-
-  channel = tp_channel_new (connection, idle_data->channel,
-      TP_IFACE_CHANNEL_TYPE_TUBES, idle_data->handle_type,
-      idle_data->handle, NULL);
-  tp_channel_call_when_ready (channel, channel_ready_cb, idle_data);
-
-  g_object_unref (connection);
-}
-
-static gboolean
-tube_handler_handle_tube_idle_cb (gpointer data)
-{
-  IdleData *idle_data = data;
-  TpConnection *connection;
-  static TpDBusDaemon *daemon = NULL;
-
-  DEBUG ("New tube to be handled");
-
-  if (!daemon)
-    daemon = tp_dbus_daemon_new (tp_get_bus ());
-
-  connection = tp_connection_new (daemon, idle_data->bus_name,
-      idle_data->connection, NULL);
-  tp_connection_call_when_ready (connection,
-      connection_ready_cb, idle_data);
-
-  return FALSE;
-}
-
-static void
-tube_handler_handle_tube (EmpSvcTubeHandler *self,
-    const gchar *bus_name,
-    const gchar *connection,
-    const gchar *channel,
-    guint handle_type,
-    guint handle,
-    DBusGMethodInvocation *context)
-{
-  EmpathyTubeHandler *thandler = EMPATHY_TUBE_HANDLER (self);
-  IdleData *data;
-
-  data = g_slice_new (IdleData);
-  data->thandler = thandler;
-  data->bus_name = g_strdup (bus_name);
-  data->connection = g_strdup (connection);
-  data->channel = g_strdup (channel);
-  data->handle_type = handle_type;
-  data->handle = handle;
-
-  g_idle_add_full (G_PRIORITY_HIGH, tube_handler_handle_tube_idle_cb,
-      data, NULL);
-
-  emp_svc_tube_handler_return_from_handle_tube (context);
-}
-
-static void
-empathy_tube_handler_class_init (EmpathyTubeHandlerClass *klass)
-{
-  signals[NEW_TUBE] =
-      g_signal_new ("new-tube", G_OBJECT_CLASS_TYPE (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
-      G_TYPE_NONE, 1, TP_TYPE_CHANNEL);
-}
-
-static void
-empathy_tube_handler_iface_init (EmpSvcTubeHandlerClass *klass)
-{
-  emp_svc_tube_handler_implement_handle_tube (klass,
-      tube_handler_handle_tube);
-}
-
-static void
-empathy_tube_handler_init (EmpathyTubeHandler *thandler)
-{
-}
-
-EmpathyTubeHandler *
-empathy_tube_handler_new (TpTubeType type,
-    const gchar *service)
-{
-  EmpathyTubeHandler *thandler = NULL;
-  DBusGProxy *proxy;
-  guint result;
-  gchar *bus_name;
-  gchar *object_path;
-  GError *error = NULL;
-
-  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
-  g_return_val_if_fail (service != NULL, NULL);
-
-  bus_name = empathy_tube_handler_build_bus_name (type, service);
-  object_path = empathy_tube_handler_build_object_path (type, service);
-
-  proxy = dbus_g_proxy_new_for_name (tp_get_bus (), DBUS_SERVICE_DBUS,
-      DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
-
-  if (!dbus_g_proxy_call (proxy, "RequestName", &error,
-      G_TYPE_STRING, bus_name, G_TYPE_UINT, DBUS_NAME_FLAG_DO_NOT_QUEUE,
-      G_TYPE_INVALID, G_TYPE_UINT, &result, G_TYPE_INVALID))
-    {
-      DEBUG ("Failed to request name: %s",
-          error ? error->message : "No error given");
-      g_clear_error (&error);
-      goto OUT;
-    }
-
-  DEBUG ("Creating tube handler %s", bus_name);
-  thandler = g_object_new (EMPATHY_TYPE_TUBE_HANDLER, NULL);
-  dbus_g_connection_register_g_object (tp_get_bus (), object_path,
-      G_OBJECT (thandler));
-
-OUT:
-  g_object_unref (proxy);
-  g_free (bus_name);
-  g_free (object_path);
-
-  return thandler;
-}
-
-static gchar *
-sanitize_service_name (const gchar *str)
-{
-  guint i;
-  gchar *result;
-
-  g_assert (str != NULL);
-  result = g_strdup (str);
-
-  for (i = 0; result[i] != '\0'; i++)
-    {
-      if (!g_ascii_isalnum (result[i]))
-        result[i] = '_';
-    }
-
-  return result;
-}
-
-gchar *
-empathy_tube_handler_build_bus_name (TpTubeType type,
-  const gchar *service)
-{
-  gchar *str = NULL;
-  const gchar *prefix = NULL;
-  gchar *service_escaped;
-
-  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
-  g_return_val_if_fail (service != NULL, NULL);
-
-  if (type == TP_TUBE_TYPE_DBUS)
-    prefix = "org.gnome.Empathy.DTubeHandler.";
-  else if (type == TP_TUBE_TYPE_STREAM)
-    prefix = "org.gnome.Empathy.StreamTubeHandler.";
-  else
-    g_return_val_if_reached (NULL);
-
-  service_escaped = sanitize_service_name (service);
-  str = g_strconcat (prefix, service_escaped, NULL);
-  g_free (service_escaped);
-
-  return str;
-}
-
-gchar *
-empathy_tube_handler_build_object_path (TpTubeType type,
-  const gchar *service)
-{
-  gchar *bus_name;
-  gchar *str;
-
-  g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL);
-  g_return_val_if_fail (service != NULL, NULL);
-
-  bus_name = empathy_tube_handler_build_bus_name (type, service);
-  str = g_strdelimit (g_strdup_printf ("/%s", bus_name), ".", '/');
-  g_free (bus_name);
-
-  return str;
-}
diff --git a/libempathy/empathy-tube-handler.h b/libempathy/empathy-tube-handler.h
deleted file mode 100644
index f20527a..0000000
--- a/libempathy/empathy-tube-handler.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2008 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Authors: Xavier Claessens <xclaesse@gmail.com>
- *          Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- */
-
-#ifndef __EMPATHY_TUBE_HANDLER_H__
-#define __EMPATHY_TUBE_HANDLER_H__
-
-#include <glib.h>
-
-#include <telepathy-glib/enums.h>
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_TUBE_HANDLER (empathy_tube_handler_get_type ())
-#define EMPATHY_TUBE_HANDLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
-    EMPATHY_TYPE_TUBE_HANDLER, EmpathyTubeHandler))
-#define EMPATHY_TUBE_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), \
-    EMPATHY_TYPE_TUBE_HANDLER, EmpathyTubeHandlerClass))
-#define EMPATHY_IS_TUBE_HANDLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
-    EMPATHY_TYPE_TUBE_HANDLER))
-#define EMPATHY_IS_TUBE_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
-    EMPATHY_TYPE_TUBE_HANDLER))
-#define EMPATHY_TUBE_HANDLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
-    EMPATHY_TYPE_TUBE_HANDLER, EmpathyTubeHandlerClass))
-
-typedef struct _EmpathyTubeHandler EmpathyTubeHandler;
-typedef struct _EmpathyTubeHandlerClass EmpathyTubeHandlerClass;
-
-struct _EmpathyTubeHandler {
-  GObject parent;
-};
-
-struct _EmpathyTubeHandlerClass {
-  GObjectClass parent_class;
-};
-
-GType empathy_tube_handler_get_type (void) G_GNUC_CONST;
-EmpathyTubeHandler *empathy_tube_handler_new (TpTubeType type,
-    const gchar *service);
-gchar *empathy_tube_handler_build_bus_name (TpTubeType type,
-    const gchar *service);
-gchar *empathy_tube_handler_build_object_path (TpTubeType type,
-    const gchar *service);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_TUBE_HANDLER_H__ */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7075d27..573a45c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -83,7 +83,6 @@ src/empathy-preferences.c
 [type: gettext/glade]src/empathy-preferences.ui
 src/empathy-status-icon.c
 [type: gettext/glade]src/empathy-status-icon.ui
-src/empathy-tube-dispatch.c
 [type: gettext/glade]src/empathy-call-window-fullscreen.ui
 src/empathy-map-view.c
 [type: gettext/glade]src/empathy-map-view.ui
diff --git a/src/.gitignore b/src/.gitignore
index 17f66a5..6e1baa5 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -2,9 +2,6 @@ empathy
 empathy-accounts
 empathy-chat-chandler
 empathy-call-chandler
-empathy-tubes-chandler
-empathy-tube-dispatch-enumtypes.c
-empathy-tube-dispatch-enumtypes.h
 org.gnome.Empathy.Chat.service
 org.gnome.Empathy.Call.service
 org.gnome.Empathy.Tubes.service
diff --git a/src/Makefile.am b/src/Makefile.am
index 3370f9b..10c0989 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,9 +24,7 @@ LDADD =								\
 bin_PROGRAMS =			\
 	empathy
 
-BUILT_SOURCES= \
-	empathy-tube-dispatch-enumtypes.h \
-	empathy-tube-dispatch-enumtypes.c
+BUILT_SOURCES=
 
 empathy_handwritten_source = \
 	empathy-about-dialog.c empathy-about-dialog.h			\
@@ -50,7 +48,6 @@ empathy_handwritten_source = \
 	empathy-preferences.c empathy-preferences.h			\
 	empathy-sidebar.c empathy-sidebar.h				\
 	empathy-status-icon.c empathy-status-icon.h			\
-	empathy-tube-dispatch.c empathy-tube-dispatch.h			\
 	empathy.c
 
 empathy_SOURCES =							\
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index e85837c..86bcc8f 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -47,7 +47,6 @@
 
 #include "empathy-event-manager.h"
 #include "empathy-main-window.h"
-#include "empathy-tube-dispatch.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_DISPATCHER
 #include <libempathy/empathy-debug.h>
@@ -67,8 +66,6 @@ typedef struct {
   gulong invalidated_handler;
   /* Remove contact if applicable */
   EmpathyContact *contact;
-  /* Tube dispatcher if applicable */
-  EmpathyTubeDispatch *tube_dispatch;
   /* option signal handler and it's instance */
   gulong handler;
   GObject *handler_instance;
@@ -141,9 +138,6 @@ event_manager_approval_free (EventManagerApproval *approval)
   if (approval->contact != NULL)
     g_object_unref (approval->contact);
 
-  if (approval->tube_dispatch != NULL)
-    g_object_unref (approval->tube_dispatch);
-
   if (approval->dialog != NULL)
     {
       gtk_widget_destroy (approval->dialog);
@@ -525,101 +519,6 @@ event_manager_media_channel_contact_changed_cb (EmpathyTpCall *call,
 }
 
 static void
-event_manager_tube_approved_cb (EventPriv *event)
-{
-  empathy_tube_dispatch_handle (event->approval->tube_dispatch);
-}
-
-static void
-event_manager_add_tube_approval (EventManagerApproval *approval,
-  EmpathyTubeDispatchAbility ability)
-{
-  const gchar *icon_name;
-  gchar       *header;
-  const gchar *msg;
-
-  header = g_strdup_printf (_("%s is offering you an invitation"),
-    empathy_contact_get_name (approval->contact));
-
-  if (ability == EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE)
-    {
-      icon_name = GTK_STOCK_EXECUTE;
-      msg = _("An external application will be started to handle it.");
-    }
-  else
-    {
-      icon_name = GTK_STOCK_DIALOG_ERROR;
-      msg = _("You don't have the needed external "
-              "application to handle it.");
-    }
-
-  event_manager_add (approval->manager, approval->contact,
-      EMPATHY_EVENT_TYPE_TUBE, icon_name, header, msg, approval,
-      event_manager_tube_approved_cb, approval);
-
-  g_free (header);
-  /* FIXME better sound for incoming tubes ? */
-  empathy_sound_play (empathy_main_window_get (),
-    EMPATHY_SOUND_CONVERSATION_NEW);
-}
-
-static void
-event_manager_tube_dispatch_ability_cb (GObject *object,
-   GParamSpec *spec, gpointer user_data)
-{
-  EventManagerApproval *approval = (EventManagerApproval *) user_data;
-  EmpathyTubeDispatchAbility dispatchability;
-
-  dispatchability =
-    empathy_tube_dispatch_is_dispatchable (approval->tube_dispatch);
-
-  if (dispatchability != EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN)
-    {
-      event_manager_add_tube_approval (approval, dispatchability);
-      g_signal_handler_disconnect (object, approval->handler);
-      approval->handler = 0;
-    }
-}
-
-static void
-event_manager_tube_got_contact_cb (EmpathyTpContactFactory *factory,
-                                   EmpathyContact *contact,
-                                   const GError *error,
-                                   gpointer user_data,
-                                   GObject *object)
-{
-  EventManagerApproval *approval = (EventManagerApproval *) user_data;
-  EmpathyTubeDispatchAbility dispatchability;
-
-  if (error != NULL)
-    {
-      /* FIXME: We should probably still display the event */
-      DEBUG ("Error: %s", error->message);
-      return;
-    }
-
-  approval->contact = g_object_ref (contact);
-
-  dispatchability = empathy_tube_dispatch_is_dispatchable
-    (approval->tube_dispatch);
-
-  switch (dispatchability)
-    {
-      case EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN:
-        approval->handler = g_signal_connect (approval->tube_dispatch,
-          "notify::dispatchability",
-          G_CALLBACK (event_manager_tube_dispatch_ability_cb), approval);
-        approval->handler_instance = G_OBJECT (approval->tube_dispatch);
-        break;
-      case EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE:
-        /* fallthrough */
-      case EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE:
-        event_manager_add_tube_approval (approval, dispatchability);
-        break;
-    }
-}
-
-static void
 invite_dialog_response_cb (GtkDialog *dialog,
                            gint response,
                            EventManagerApproval *approval)
@@ -875,28 +774,6 @@ event_manager_approve_channel_cb (EmpathyDispatcher *dispatcher,
 
       g_object_unref (factory);
     }
-  else if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE) ||
-      !tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_DBUS_TUBE))
-    {
-      TpChannel *channel;
-      TpHandle handle;
-      TpHandleType handle_type;
-      TpConnection *connection;
-      EmpathyTpContactFactory *factory;
-
-      channel = empathy_dispatch_operation_get_channel (operation);
-      handle = tp_channel_get_handle (channel, &handle_type);
-
-      /* Only understand p2p tubes */
-      if (handle_type != TP_HANDLE_TYPE_CONTACT)
-        return;
-
-      approval->tube_dispatch = empathy_tube_dispatch_new (operation);
-      connection = tp_channel_borrow_connection (channel);
-      factory = empathy_tp_contact_factory_dup_singleton (connection);
-      empathy_tp_contact_factory_get_from_handle (factory, handle,
-        event_manager_tube_got_contact_cb, approval, NULL, G_OBJECT (manager));
-    }
   else
     {
       DEBUG ("Unknown channel type (%s), ignoring..", channel_type);
diff --git a/src/empathy-tube-dispatch.c b/src/empathy-tube-dispatch.c
deleted file mode 100644
index 60f7f4b..0000000
--- a/src/empathy-tube-dispatch.c
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * empathy-tube-dispatch.c - Source for EmpathyTubeDispatch
- * Copyright (C) 2008 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <telepathy-glib/dbus.h>
-#include <telepathy-glib/util.h>
-#include <telepathy-glib/proxy-subclass.h>
-#include <telepathy-glib/interfaces.h>
-
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-
-
-#include <libempathy/empathy-tube-handler.h>
-#include <extensions/extensions.h>
-
-
-#include "empathy-tube-dispatch.h"
-#include "empathy-tube-dispatch-enumtypes.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_DISPATCHER
-#include <libempathy/empathy-debug.h>
-
-G_DEFINE_TYPE(EmpathyTubeDispatch, empathy_tube_dispatch, G_TYPE_OBJECT)
-
-static void empathy_tube_dispatch_set_ability (
-  EmpathyTubeDispatch *tube_dispatch,
-  EmpathyTubeDispatchAbility dispatchability);
-
-/* private structure */
-typedef struct _EmpathyTubeDispatchPriv EmpathyTubeDispatchPriv;
-
-/* properties */
-enum {
-    PROP_OPERATION = 1,
-    PROP_DISPATCHABILITY
-};
-
-
-struct _EmpathyTubeDispatchPriv
-{
-  gboolean dispose_has_run;
-  EmpathyDispatchOperation *operation;
-  EmpathyTubeDispatchAbility dispatchability;
-  gchar *service;
-  gchar *bus_name;
-  gchar *object_path;
-  TpDBusDaemon *dbus;
-};
-
-#define GET_PRIV(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
-  EMPATHY_TYPE_TUBE_DISPATCH, EmpathyTubeDispatchPriv))
-
-static void
-empathy_tube_dispatch_init (EmpathyTubeDispatch *obj)
-{
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (obj);
-
-  priv->dispatchability = EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN;
-}
-
-static void empathy_tube_dispatch_dispose (GObject *object);
-static void empathy_tube_dispatch_finalize (GObject *object);
-
-static void
-empathy_tube_dispatch_list_activatable_names_cb (TpDBusDaemon *proxy,
-  const gchar **names, const GError *error, gpointer user_data,
-  GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-  gchar **name;
-
-  for (name = (gchar **) names; *name != NULL; name++)
-    {
-      if (!tp_strdiff (*name, priv->bus_name))
-        {
-          DEBUG ("Found tube handler. Can dispatch it");
-          empathy_tube_dispatch_set_ability (self,
-            EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE);
-          return;
-        }
-    }
-
-  DEBUG ("Didn't find tube handler. Can't dispatch it");
-  empathy_tube_dispatch_set_ability (self,
-    EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE);
-}
-
-static void
-empathy_tube_dispatch_name_has_owner_cb (TpDBusDaemon *proxy,
-  gboolean has_owner, const GError *error, gpointer user_data,
-  GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-
-  if (error != NULL)
-    {
-      DEBUG ("NameHasOwner failed. Can't dispatch tube");
-      empathy_tube_dispatch_set_ability (self,
-        EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE);
-      return;
-    }
-
-  if (has_owner)
-    {
-      DEBUG ("Tube handler is running. Can dispatch it");
-      empathy_tube_dispatch_set_ability (self,
-        EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE);
-    }
-  else
-    {
-      DEBUG ("Tube handler is not running. Calling ListActivatableNames");
-      tp_cli_dbus_daemon_call_list_activatable_names (priv->dbus, -1,
-        empathy_tube_dispatch_list_activatable_names_cb, NULL, NULL,
-        G_OBJECT (self));
-    }
-}
-
-static void
-empathy_tube_dispatch_constructed (GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-  TpChannel *channel;
-  GHashTable *properties;
-  const gchar *service;
-  const gchar *channel_type;
-  TpTubeType type;
-
-  priv->dbus = tp_dbus_daemon_new (tp_get_bus ());
-
-  channel = empathy_dispatch_operation_get_channel (priv->operation);
-  properties = tp_channel_borrow_immutable_properties (channel);
-
-  channel_type = tp_asv_get_string (properties,
-    TP_IFACE_CHANNEL ".ChannelType");
-  if (channel_type == NULL)
-    goto failed;
-
-  if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE))
-    {
-      type = TP_TUBE_TYPE_STREAM;
-      service = tp_asv_get_string (properties,
-        TP_IFACE_CHANNEL_TYPE_STREAM_TUBE  ".Service");
-    }
-  else if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_DBUS_TUBE))
-    {
-      GError *error = NULL;
-
-      type = TP_TUBE_TYPE_DBUS;
-      service = tp_asv_get_string (properties,
-        TP_IFACE_CHANNEL_TYPE_DBUS_TUBE  ".ServiceName");
-
-      if (!tp_dbus_check_valid_bus_name (service, TP_DBUS_NAME_TYPE_WELL_KNOWN,
-            &error))
-        {
-          DEBUG ("Can't dispatch tube; invalid ServiceName %s: %s", service,
-              error->message);
-          g_error_free (error);
-          goto failed;
-        }
-    }
-  else
-    {
-      goto failed;
-    }
-
-
-  if (service == NULL)
-    goto failed;
-
-  priv->bus_name = empathy_tube_handler_build_bus_name (type, service);
-  priv->object_path = empathy_tube_handler_build_object_path (type, service);
-
-  priv->service = g_strdup (service);
-
-  DEBUG ("Look for tube handler %s\n", priv->bus_name);
-  tp_cli_dbus_daemon_call_name_has_owner (priv->dbus, -1, priv->bus_name,
-    empathy_tube_dispatch_name_has_owner_cb, NULL, NULL, G_OBJECT (self));
-
-  return;
-
-failed:
-  empathy_tube_dispatch_set_ability (self,
-    EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE);
-}
-
-static void
-empathy_tube_dispatch_set_property (GObject *object,
-  guint property_id, const GValue *value, GParamSpec *pspec)
-{
-  EmpathyTubeDispatch *tube_dispatch = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (tube_dispatch);
-
-  switch (property_id)
-    {
-      case PROP_OPERATION:
-        priv->operation = g_value_dup_object (value);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-        break;
-    }
-}
-
-static void
-empathy_tube_dispatch_get_property (GObject *object,
-  guint property_id, GValue *value, GParamSpec *pspec)
-{
-  EmpathyTubeDispatch *tube_dispatch = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (tube_dispatch);
-
-  switch (property_id)
-    {
-      case PROP_OPERATION:
-        g_value_set_object (value, priv->operation);
-        break;
-      case PROP_DISPATCHABILITY:
-        g_value_set_enum (value, priv->dispatchability);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-        break;
-    }
-}
-
-static void
-empathy_tube_dispatch_class_init (
-  EmpathyTubeDispatchClass *empathy_tube_dispatch_class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (empathy_tube_dispatch_class);
-  GParamSpec *param_spec;
-
-  g_type_class_add_private (empathy_tube_dispatch_class,
-    sizeof (EmpathyTubeDispatchPriv));
-
-  object_class->set_property = empathy_tube_dispatch_set_property;
-  object_class->get_property = empathy_tube_dispatch_get_property;
-
-  object_class->constructed = empathy_tube_dispatch_constructed;
-  object_class->dispose = empathy_tube_dispatch_dispose;
-  object_class->finalize = empathy_tube_dispatch_finalize;
-
-  param_spec = g_param_spec_object ("operation",
-    "operation", "The telepathy connection",
-    EMPATHY_TYPE_DISPATCH_OPERATION,
-    G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_OPERATION, param_spec);
-
-  param_spec = g_param_spec_enum ("dispatchability",
-    "dispatchability",
-    "Whether or not there is a handler to dispatch the operation to",
-    EMPATHY_TYPE_TUBE_DISPATCH_ABILITY, EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_DISPATCHABILITY,
-    param_spec);
-
-}
-
-void
-empathy_tube_dispatch_dispose (GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  /* release any references held by the object here */
-  if (priv->operation != NULL)
-    g_object_unref (priv->operation);
-
-  priv->operation = NULL;
-
-  if (priv->dbus != NULL)
-    g_object_unref (priv->dbus);
-
-  priv->dbus = NULL;
-
-
-  if (G_OBJECT_CLASS (empathy_tube_dispatch_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_tube_dispatch_parent_class)->dispose (object);
-}
-
-void
-empathy_tube_dispatch_finalize (GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-
-  g_free (priv->bus_name);
-  g_free (priv->object_path);
-  g_free (priv->service);
-
-  /* free any data held directly by the object here */
-
-  G_OBJECT_CLASS (empathy_tube_dispatch_parent_class)->finalize (object);
-}
-
-EmpathyTubeDispatch *
-empathy_tube_dispatch_new (EmpathyDispatchOperation *operation)
-{
-  return EMPATHY_TUBE_DISPATCH (g_object_new (EMPATHY_TYPE_TUBE_DISPATCH,
-      "operation", operation, NULL));
-}
-
-EmpathyTubeDispatchAbility
-empathy_tube_dispatch_is_dispatchable (EmpathyTubeDispatch *tube_dispatch)
-{
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (tube_dispatch);
-
-  return priv->dispatchability;
-}
-
-static void
-empathy_tube_dispatch_set_ability (EmpathyTubeDispatch *tube_dispatch,
-  EmpathyTubeDispatchAbility dispatchability)
-{
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (tube_dispatch);
-
-  if (priv->dispatchability == dispatchability)
-    return;
-
-  priv->dispatchability = dispatchability;
-  g_object_notify (G_OBJECT (tube_dispatch), "dispatchability");
-}
-
-static void
-empathy_tube_dispatch_show_error (EmpathyTubeDispatch *self, gchar *message)
-{
-  GtkWidget *dialog;
-
-  dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL,
-      GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, "%s", message);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-
-  gtk_widget_destroy (dialog);
-}
-
-static void
-empathy_tube_dispatch_handle_tube_cb (TpProxy *proxy, const GError *error,
-  gpointer user_data, GObject *object)
-{
-  EmpathyTubeDispatch *self = EMPATHY_TUBE_DISPATCH (object);
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-
-  if (error != NULL)
-    {
-      gchar *msg = g_strdup_printf (
-        _("Unable to start application for service %s: %s"),
-          priv->service,  error->message);
-
-      empathy_tube_dispatch_show_error (self, msg);
-      g_free (msg);
-    }
-
-  /* Remove the ref we were holding because of the dispatching */
-  g_object_unref (object);
-}
-
-static void
-empathy_tube_do_dispatch (EmpathyTubeDispatch *self)
-{
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (self);
-  TpChannel *channel;
-  TpProxy *connection;
-  TpProxy *thandler;
-  gchar   *object_path;
-  guint    handle_type;
-  guint    handle;
-
-  channel = empathy_dispatch_operation_get_channel (priv->operation);
-
-  /* Create the proxy for the tube handler */
-  thandler = g_object_new (TP_TYPE_PROXY,
-    "dbus-connection", tp_get_bus (),
-    "bus-name", priv->bus_name,
-    "object-path", priv->object_path,
-    NULL);
-
-  tp_proxy_add_interface_by_id (thandler, EMP_IFACE_QUARK_TUBE_HANDLER);
-
-  /* Give the tube to the handler */
-  g_object_get (channel,
-    "connection", &connection,
-    "object-path", &object_path,
-    "handle_type", &handle_type,
-    "handle", &handle,
-    NULL);
-
-  emp_cli_tube_handler_call_handle_tube (thandler, -1,
-    connection->bus_name, connection->object_path,
-    object_path, handle_type, handle,
-    empathy_tube_dispatch_handle_tube_cb, NULL, NULL, G_OBJECT (self));
-
-  g_object_unref (thandler);
-  g_object_unref (connection);
-  g_free (object_path);
-}
-
-void
-empathy_tube_dispatch_handle (EmpathyTubeDispatch *tube_dispatch)
-{
-  EmpathyTubeDispatchPriv *priv = GET_PRIV (tube_dispatch);
-
-  /* Keep ourselves alive untill the dispatching is finished */
-  g_object_ref (tube_dispatch);
-
-  /* If we can't claim it, don't do anything */
-  if (!empathy_dispatch_operation_claim (priv->operation))
-    goto done;
-
-  if (priv->dispatchability != EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE)
-    {
-      gchar *msg;
-      TpChannel *channel;
-
-      channel = empathy_dispatch_operation_get_channel (priv->operation);
-
-      msg = g_strdup_printf (
-        _("An invitation was offered for service %s, but you don't have the "
-          "application necessary to handle it"), priv->service);
-
-      empathy_tube_dispatch_show_error (tube_dispatch, msg);
-
-      g_free (msg);
-
-      tp_cli_channel_call_close (channel, -1, NULL, NULL, NULL, NULL);
-
-      goto done;
-    }
-  else
-    {
-      empathy_tube_do_dispatch (tube_dispatch);
-    }
-
-  return;
-done:
-  g_object_unref (tube_dispatch);
-}
-
diff --git a/src/empathy-tube-dispatch.h b/src/empathy-tube-dispatch.h
deleted file mode 100644
index 844c881..0000000
--- a/src/empathy-tube-dispatch.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * empathy-tube-dispatch.h - Header for EmpathyTubeDispatch
- * Copyright (C) 2008 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __EMPATHY_TUBE_DISPATCH_H__
-#define __EMPATHY_TUBE_DISPATCH_H__
-
-#include <glib-object.h>
-
-#include <libempathy/empathy-dispatch-operation.h>
-
-G_BEGIN_DECLS
-
-typedef enum {
-  EMPATHY_TUBE_DISPATCHABILITY_UNKNOWN,
-  EMPATHY_TUBE_DISPATCHABILITY_POSSIBLE,
-  EMPATHY_TUBE_DISPATCHABILITY_IMPOSSIBLE,
-} EmpathyTubeDispatchAbility;
-
-typedef struct _EmpathyTubeDispatch EmpathyTubeDispatch;
-typedef struct _EmpathyTubeDispatchClass EmpathyTubeDispatchClass;
-
-struct _EmpathyTubeDispatchClass {
-    GObjectClass parent_class;
-};
-
-struct _EmpathyTubeDispatch {
-    GObject parent;
-};
-
-GType empathy_tube_dispatch_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_TUBE_DISPATCH \
-  (empathy_tube_dispatch_get_type ())
-#define EMPATHY_TUBE_DISPATCH(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_TUBE_DISPATCH, \
-    EmpathyTubeDispatch))
-#define EMPATHY_TUBE_DISPATCH_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_TUBE_DISPATCH, \
-    EmpathyTubeDispatchClass))
-#define EMPATHY_IS_TUBE_DISPATCH(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_TUBE_DISPATCH))
-#define EMPATHY_IS_TUBE_DISPATCH_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_TUBE_DISPATCH))
-#define EMPATHY_TUBE_DISPATCH_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_TUBE_DISPATCH, \
-   EmpathyTubeDispatchClass))
-
-EmpathyTubeDispatch * empathy_tube_dispatch_new (
-  EmpathyDispatchOperation *operation);
-
-EmpathyTubeDispatchAbility empathy_tube_dispatch_is_dispatchable (
-  EmpathyTubeDispatch *tube_dispatch);
-void empathy_tube_dispatch_handle (EmpathyTubeDispatch *tube_dispatch);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_TUBE_DISPATCH_H__*/
diff --git a/src/empathy.c b/src/empathy.c
index 4baf5b8..e54274b 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -709,12 +709,6 @@ setup_dispatcher (void)
     { TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, TP_HANDLE_TYPE_CONTACT  },
     /* stream media to contacts */
     { TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, TP_HANDLE_TYPE_CONTACT  },
-    /* stream tubes to contacts and rooms */
-    { TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, TP_HANDLE_TYPE_CONTACT  },
-    { TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, TP_HANDLE_TYPE_ROOM  },
-    /* d-bus tubes to contacts and rooms */
-    { TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, TP_HANDLE_TYPE_CONTACT },
-    { TP_IFACE_CHANNEL_TYPE_DBUS_TUBE, TP_HANDLE_TYPE_ROOM  },
     /* roomlists */
     { TP_IFACE_CHANNEL_TYPE_ROOM_LIST, TP_HANDLE_TYPE_NONE },
   };
