diff --git a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
index a349f59..c418e0b 100644
--- a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
+++ b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
@@ -98,7 +98,6 @@ static CGEventRef tapEventCallback(CGEventTapProxy proxy, CGEventType type, CGEv
 {
 	return [NSArray arrayWithObjects:
 		[[NSBundle mainBundle] bundleIdentifier], // your app
-		@"com.spotify.client",
 		@"com.apple.iTunes",
 		@"com.apple.QuickTimePlayerX",
 		@"com.apple.quicktimeplayer",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47f1693..986351b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,6 @@ include(cmake/Summary.cmake)
 include(cmake/Version.cmake)
 include(cmake/Deb.cmake)
 include(cmake/Rpm.cmake)
-include(cmake/SpotifyVersion.cmake)
 include(cmake/OptionalSource.cmake)
 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
 
@@ -78,7 +77,6 @@ pkg_check_modules(LIBMYGPO_QT libmygpo-qt>=1.0.7)
 pkg_check_modules(LIBXML libxml-2.0)
 pkg_check_modules(QCA qca2)
 pkg_check_modules(QJSON REQUIRED QJson)
-pkg_check_modules(SPOTIFY libspotify>=12.1.45)
 pkg_check_modules(TAGLIB REQUIRED taglib>=1.6)
 
 if (WIN32)
@@ -124,13 +122,6 @@ if (APPLE)
   find_library(GROWL Growl)
   find_library(SPARKLE Sparkle)
 
-  find_library(SPOTIFY libspotify)
-  if (SPOTIFY)
-    set (SPOTIFY_FOUND ON)
-    set (SPOTIFY_INCLUDE_DIRS ${SPOTIFY})
-    set (SPOTIFY_LIBRARIES ${SPOTIFY})
-  endif (SPOTIFY)
-
   add_subdirectory(3rdparty/SPMediaKeyTap)
   set(SPMEDIAKEYTAP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/SPMediaKeyTap)
   set(SPMEDIAKEYTAP_LIBRARIES SPMediaKeyTap)
@@ -254,7 +245,7 @@ optional_component(DEVICEKIT ON "Devices: DeviceKit backend"
   DEPENDS "D-Bus support" HAVE_DBUS
 )
 
-optional_component(SPOTIFY_BLOB ON "Spotify support: non-GPL binary helper"
+optional_component(SPOTIFY_BLOB OFF "Spotify support: non-GPL binary helper"
   DEPENDS "protobuf" PROTOBUF_FOUND PROTOBUF_PROTOC_EXECUTABLE
   DEPENDS "libspotify" SPOTIFY_FOUND
 )
@@ -270,13 +261,6 @@ optional_component(SPARKLE ON "Sparkle integration"
 
 optional_component(VISUALISATIONS ON "Visualisations")
 
-if(NOT HAVE_SPOTIFY_BLOB AND NOT QCA_FOUND)
-  message(FATAL_ERROR "Either QCA must be available or the non-GPL Spotify "
-          "code must be compiled in")
-elseif(QCA_FOUND)
-  set(HAVE_SPOTIFY_DOWNLOADER ON)
-endif()
-
 # Find DBus if it's enabled
 if (HAVE_DBUS)
   find_package(Qt4 REQUIRED QtDbus)
@@ -440,7 +424,6 @@ add_subdirectory(ext/libclementine-common)
 add_subdirectory(ext/libclementine-tagreader)
 add_subdirectory(ext/clementine-tagreader)
 add_subdirectory(ext/libclementine-remote)
-add_subdirectory(ext/libclementine-spotifyblob)
 
 option(WITH_DEBIAN OFF)
 if(WITH_DEBIAN)
@@ -451,10 +434,6 @@ if(HAVE_BREAKPAD)
   add_subdirectory(3rdparty/google-breakpad)
 endif(HAVE_BREAKPAD)
 
-if(HAVE_SPOTIFY_BLOB)
-  add_subdirectory(ext/clementine-spotifyblob)
-endif(HAVE_SPOTIFY_BLOB)
-
 if(HAVE_MOODBAR)
   add_subdirectory(gst/moodbar)
 endif()
diff --git a/data/data.qrc b/data/data.qrc
index 4c5473f..bd5fe2d 100644
--- a/data/data.qrc
+++ b/data/data.qrc
@@ -2,7 +2,6 @@
     <qresource prefix="/">
         <file>blank.ttf</file>
         <file>clementine_remote_qr.png</file>
-        <file>clementine-spotify-public.pem</file>
         <file>currenttrack_bar_left.png</file>
         <file>currenttrack_bar_mid.png</file>
         <file>currenttrack_bar_right.png</file>
@@ -77,7 +76,6 @@
         <file>icons/22x22/phone-nokia-n900.png</file>
         <file>icons/22x22/phone-palm-pre.png</file>
         <file>icons/22x22/phone.png</file>
-        <file>icons/22x22/spotify.png</file>
         <file>icons/22x22/user-away.png</file>
         <file>icons/22x22/view-choose.png</file>
         <file>icons/22x22/view-fullscreen.png</file>
@@ -154,7 +152,6 @@
         <file>icons/32x32/phone-palm-pre.png</file>
         <file>icons/32x32/phone.png</file>
         <file>icons/32x32/search.png</file>
-        <file>icons/32x32/spotify.png</file>
         <file>icons/32x32/tools-wizard.png</file>
         <file>icons/32x32/view-choose.png</file>
         <file>icons/32x32/view-fullscreen.png</file>
@@ -230,7 +227,6 @@
         <file>icons/48x48/phone-nokia-n900.png</file>
         <file>icons/48x48/phone-palm-pre.png</file>
         <file>icons/48x48/phone.png</file>
-        <file>icons/48x48/spotify.png</file>
         <file>icons/48x48/view-choose.png</file>
         <file>icons/48x48/view-fullscreen.png</file>
         <file>icons/48x48/view-media-equalizer.png</file>
@@ -262,10 +258,10 @@
         <file>lumberjacksong.txt</file>
         <file>lyrics/ultimate_providers.xml</file>
         <file>mainwindow.css</file>
+        <file>moognu.png</file>
         <file>nocover.png</file>
         <file>nomusic.png</file>
         <file>now_playing_tooltip.txt</file>
-        <file>nyancat.png</file>
         <file>oauthsuccess.html</file>
         <file>osd_background.png</file>
         <file>osd_shadow_corner.png</file>
@@ -391,7 +387,6 @@
         <file>smartplaylistsearchterm.css</file>
         <file>songinfo.css</file>
         <file>spinner.gif</file>
-        <file>spotify-attribution.png</file>
         <file>star-off.png</file>
         <file>star-on.png</file>
         <file>tiny-pause.png</file>
diff --git a/dist/macdeploy.py b/dist/macdeploy.py
index e054619..3568a6f 100755
--- a/dist/macdeploy.py
+++ b/dist/macdeploy.py
@@ -398,10 +398,7 @@ def main():
   FixPlugin(FindGioModule('libgiolibproxy.so'), 'gio-modules')
 
   try:
-    FixPlugin('clementine-spotifyblob', '.')
     FixPlugin('clementine-tagreader', '.')
-  except:
-    print 'Failed to find blob: %s' % traceback.format_exc()
 
   for plugin in QT_PLUGINS:
     FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in
index 750b332..6bf47ff 100644
--- a/dist/windows/clementine.nsi.in
+++ b/dist/windows/clementine.nsi.in
@@ -97,9 +97,6 @@ Section "Delete old files" oldfiles
   Delete "$INSTDIR\gstreamer-plugins\libgstqueue2.dll"
   Delete "$INSTDIR\gstreamer-plugins\libgstsoup.dll"
 
-  ; 1.0 prerelease
-  Delete "$INSTDIR\spotify.dll"
-
   ; 1.0
   Delete "$INSTDIR\libofa.dll"
   Delete "$INSTDIR\gstreamer-plugins\libgstofa.dll"
@@ -128,7 +125,6 @@ Section "Clementine" Clementine
   File "avutil-51.dll"
   File "clementine.exe"
   File "clementine-tagreader.exe"
-  File "clementine-spotifyblob.exe"
   File "clementine.ico"
   File "glew32.dll"
   File "intl.dll"
@@ -181,7 +177,6 @@ Section "Clementine" Clementine
   File "libqjson.dll"
   File "libsoup-2.4-1.dll"
   File "libspeex-1.dll"
-  File "libspotify.dll"
   File "libstdc++-6.dll"
   File "libtag.dll"
   File "libtasn1-3.dll"
@@ -939,7 +934,6 @@ Section "Uninstall"
   Delete "$INSTDIR\clementine.ico"
   Delete "$INSTDIR\clementine.exe"
   Delete "$INSTDIR\clementine-tagreader.exe"
-  Delete "$INSTDIR\clementine-spotifyblob.exe"
   Delete "$INSTDIR\glew32.dll"
   Delete "$INSTDIR\intl.dll"
   Delete "$INSTDIR\libcdio-14.dll"
@@ -992,7 +986,6 @@ Section "Uninstall"
   Delete "$INSTDIR\libqjson.dll"
   Delete "$INSTDIR\libsoup-2.4-1.dll"
   Delete "$INSTDIR\libspeex-1.dll"
-  Delete "$INSTDIR\libspotify.dll"
   Delete "$INSTDIR\libstdc++-6.dll"
   Delete "$INSTDIR\libtag.dll"
   Delete "$INSTDIR\libtasn1-3.dll"
diff --git a/ext/libclementine-common/core/logging.cpp b/ext/libclementine-common/core/logging.cpp
index 3c53d7a..49dd8cf 100644
--- a/ext/libclementine-common/core/logging.cpp
+++ b/ext/libclementine-common/core/logging.cpp
@@ -14,10 +14,6 @@
    limitations under the License.
 */
 
-// Note: this file is licensed under the Apache License instead of GPL because
-// it is used by the Spotify blob which links against libspotify and is not GPL
-// compatible.
-
 #include <QtGlobal>
 
 #include <cxxabi.h>
diff --git a/ext/libclementine-common/core/logging.h b/ext/libclementine-common/core/logging.h
index 3c582cf..4a3cea8 100644
--- a/ext/libclementine-common/core/logging.h
+++ b/ext/libclementine-common/core/logging.h
@@ -14,11 +14,6 @@
    limitations under the License.
 */
 
-// Note: this file is licensed under the Apache License instead of GPL because
-// it is used by the Spotify blob which links against libspotify and is not GPL
-// compatible.
-
-
 #ifndef LOGGING_H
 #define LOGGING_H
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1104542..e7a8032 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -60,8 +60,6 @@ include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-tagreader)
 include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-tagreader)
 include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-remote)
 include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-remote)
-include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-spotifyblob)
-include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-spotifyblob)
 
 cmake_policy(SET CMP0011 NEW)
 include(../cmake/ParseArguments.cmake)
@@ -157,7 +155,6 @@ set(SOURCES
   globalsearch/simplesearchprovider.cpp
   globalsearch/somafmsearchprovider.cpp
   globalsearch/soundcloudsearchprovider.cpp
-  globalsearch/spotifysearchprovider.cpp
   globalsearch/suggestionwidget.cpp
   globalsearch/urlsearchprovider.cpp
 
@@ -195,9 +192,6 @@ set(SOURCES
   internet/somafmservice.cpp
   internet/somafmurlhandler.cpp
   internet/soundcloudservice.cpp
-  internet/spotifyserver.cpp
-  internet/spotifyservice.cpp
-  internet/spotifysettingspage.cpp
   internet/subsonicservice.cpp
   internet/subsonicsettingspage.cpp
   internet/subsonicurlhandler.cpp
@@ -461,7 +455,6 @@ set(HEADERS
   globalsearch/searchprovider.h
   globalsearch/simplesearchprovider.h
   globalsearch/soundcloudsearchprovider.h
-  globalsearch/spotifysearchprovider.h
   globalsearch/suggestionwidget.h
 
   internet/cloudfileservice.h
@@ -494,9 +487,6 @@ set(HEADERS
   internet/somafmservice.h
   internet/somafmurlhandler.h
   internet/soundcloudservice.h
-  internet/spotifyserver.h
-  internet/spotifyservice.h
-  internet/spotifysettingspage.h
   internet/subsonicservice.h
   internet/subsonicsettingspage.h
   internet/subsonicurlhandler.h
@@ -685,7 +675,6 @@ set(UI
   internet/magnatunedownloaddialog.ui
   internet/magnatunesettingspage.ui
   internet/searchboxwidget.ui
-  internet/spotifysettingspage.ui
   internet/subsonicsettingspage.ui
 
   library/groupbydialog.ui
@@ -836,15 +825,6 @@ optional_source(HAVE_LIBLASTFM
 )
 
 
-optional_source(HAVE_SPOTIFY_DOWNLOADER
-  SOURCES
-    internet/spotifyblobdownloader.cpp
-  HEADERS
-    internet/spotifyblobdownloader.h
-  INCLUDE_DIRECTORIES
-    ${QCA_INCLUDE_DIRS}
-)
-
 # Platform specific - OS X
 optional_source(APPLE
   INCLUDE_DIRECTORIES
@@ -1171,7 +1151,6 @@ add_dependencies(clementine_lib pot)
 
 
 target_link_libraries(clementine_lib
-  clementine-spotifyblob-messages
   libclementine-common
   libclementine-tagreader
   libclementine-remote
@@ -1240,13 +1219,6 @@ if(HAVE_BREAKPAD)
   endif (LINUX)
 endif(HAVE_BREAKPAD)
 
-if(HAVE_SPOTIFY_DOWNLOADER)
-  target_link_libraries(clementine_lib
-    ${QCA_LIBRARIES}
-  )
-  link_directories(${QCA_LIBRARY_DIRS})
-endif(HAVE_SPOTIFY_DOWNLOADER)
-
 if (APPLE)
   target_link_libraries(clementine_lib
     ${GROWL}
@@ -1328,16 +1300,6 @@ target_link_libraries(clementine
   clementine_lib
 )
 
-# macdeploy.py relies on the blob being built first.
-if(HAVE_SPOTIFY_BLOB)
-  add_dependencies(clementine clementine-spotifyblob)
-endif(HAVE_SPOTIFY_BLOB)
-add_dependencies(clementine clementine-tagreader)
-
-set_target_properties(clementine PROPERTIES
-  MACOSX_BUNDLE_INFO_PLIST "../dist/Info.plist"
-)
-
 if (APPLE)
   install(FILES ../dist/clementine.icns
     DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Resources")
diff --git a/src/analyzers/nyancatanalyzer.cpp b/src/analyzers/nyancatanalyzer.cpp
index 39ea101..ab19341 100644
--- a/src/analyzers/nyancatanalyzer.cpp
+++ b/src/analyzers/nyancatanalyzer.cpp
@@ -23,13 +23,13 @@
 #include <QTimerEvent>
 #include <QBrush>
 
-const char* NyanCatAnalyzer::kName = "Nyanalyzer cat";
+const char* NyanCatAnalyzer::kName = "MooGNU";
 const float NyanCatAnalyzer::kPixelScale = 0.02f;
 
 
 NyanCatAnalyzer::NyanCatAnalyzer(QWidget* parent)
   : Analyzer::Base(parent, 9),
-    cat_(":/nyancat.png"),
+    cat_(":/moognu.png"),
     timer_id_(startTimer(kFrameIntervalMs)),
     frame_(0),
     current_buffer_(0),
diff --git a/src/config.h.in b/src/config.h.in
index 6cac97e..90e4ee2 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -39,7 +39,6 @@
 #cmakedefine HAVE_QCA
 #cmakedefine HAVE_SKYDRIVE
 #cmakedefine HAVE_SPARKLE
-#cmakedefine HAVE_SPOTIFY_DOWNLOADER
 #cmakedefine HAVE_STATIC_SQLITE
 #cmakedefine HAVE_UBUNTU_ONE
 #cmakedefine HAVE_WIIMOTEDEV
diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp
index 347b959..b00cb87 100644
--- a/src/core/backgroundstreams.cpp
+++ b/src/core/backgroundstreams.cpp
@@ -9,7 +9,6 @@
 
 const char* BackgroundStreams::kSettingsGroup = "BackgroundStreams";
 const char* BackgroundStreams::kHypnotoadUrl = "hypnotoad:///";
-const char* BackgroundStreams::kRainUrl = "http://data.clementine-player.org/rainymood";
 const char* BackgroundStreams::kEnterpriseUrl = "enterprise:///";
 
 BackgroundStreams::BackgroundStreams(EngineBase* engine, QObject* parent)
@@ -28,7 +27,6 @@ void BackgroundStreams::LoadStreams() {
   int version = s.value("version", 0).toInt();
   if (version < 1) {
     AddStream(QT_TR_NOOP("Hypnotoad"), QUrl(kHypnotoadUrl));
-    AddStream(QT_TR_NOOP("Rain"), QUrl(kRainUrl));
   }
 
   if (version < kVersion) {
diff --git a/src/core/timeconstants.h b/src/core/timeconstants.h
index 96242d6..69196bd 100644
--- a/src/core/timeconstants.h
+++ b/src/core/timeconstants.h
@@ -14,10 +14,6 @@
    limitations under the License.
 */
 
-// Note: this file is licensed under the Apache License instead of GPL because
-// it is used by the Spotify blob which links against libspotify and is not GPL
-// compatible.
-
 #ifndef TIMECONSTANTS_H
 #define TIMECONSTANTS_H
 
diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp
index 3fdc6be..e6a109f 100644
--- a/src/core/utilities.cpp
+++ b/src/core/utilities.cpp
@@ -340,9 +340,6 @@ QString GetConfigPath(ConfigPath config) {
         return QDir::homePath();
       #endif
 
-    case Path_LocalSpotifyBlob:
-      return GetConfigPath(Path_Root) + "/spotifyblob";
-
     default:
       qFatal("%s", Q_FUNC_INFO);
       return QString::null;
diff --git a/src/core/utilities.h b/src/core/utilities.h
index edaa545..ad2138c 100644
--- a/src/core/utilities.h
+++ b/src/core/utilities.h
@@ -111,7 +111,6 @@ namespace Utilities {
     Path_NetworkCache,
     Path_GstreamerRegistry,
     Path_DefaultMusicLibrary,
-    Path_LocalSpotifyBlob,
     Path_MoodbarCache,
     Path_CacheRoot,
   };
diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp
index a4c4241..39dd101 100644
--- a/src/covers/albumcoverloader.cpp
+++ b/src/covers/albumcoverloader.cpp
@@ -30,7 +30,6 @@
 #include "core/tagreaderclient.h"
 #include "core/utilities.h"
 #include "internet/internetmodel.h"
-#include "internet/spotifyservice.h"
 
 
 
@@ -38,8 +37,7 @@ AlbumCoverLoader::AlbumCoverLoader(QObject* parent)
   : QObject(parent),
     stop_requested_(false),
     next_id_(1),
-    network_(new NetworkAccessManager(this)),
-    connected_spotify_(false)
+    network_(new NetworkAccessManager(this))
 {
 }
 
@@ -169,26 +167,6 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage(
 
     remote_tasks_.insert(reply, task);
     return TryLoadResult(true, false, QImage());
-  } else if (filename.toLower().startsWith("spotify://image/")) {
-    // HACK: we should add generic image URL handlers
-    SpotifyService* spotify = InternetModel::Service<SpotifyService>();
-
-    if (!connected_spotify_) {
-      connect(spotify, SIGNAL(ImageLoaded(QString,QImage)),
-              SLOT(SpotifyImageLoaded(QString,QImage)));
-      connected_spotify_ = true;
-    }
-
-    QString id = QUrl(filename).path();
-    if (id.startsWith('/')) {
-      id.remove(0, 1);
-    }
-    remote_spotify_tasks_.insert(id, task);
-
-    // Need to schedule this in the spotify service's thread
-    QMetaObject::invokeMethod(spotify, "LoadImage", Qt::QueuedConnection,
-                              Q_ARG(QString, id));
-    return TryLoadResult(true, false, QImage());
   }
 
   QImage image(filename);
@@ -196,16 +174,6 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage(
                        image.isNull() ? task.options.default_output_image_: image);
 }
 
-void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, const QImage& image) {
-  if (!remote_spotify_tasks_.contains(id))
-    return;
-
-  Task task = remote_spotify_tasks_.take(id);
-  QImage scaled = ScaleAndPad(task.options, image);
-  emit ImageLoaded(task.id, scaled);
-  emit ImageLoaded(task.id, scaled, image);
-}
-
 void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) {
   reply->deleteLater();
 
diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h
index 987be66..5214e14 100644
--- a/src/covers/albumcoverloader.h
+++ b/src/covers/albumcoverloader.h
@@ -62,7 +62,6 @@ class AlbumCoverLoader : public QObject {
  protected slots:
   void ProcessTasks();
   void RemoteFetchFinished(QNetworkReply* reply);
-  void SpotifyImageLoaded(const QString& url, const QImage& image);
 
  protected:
   enum State {
@@ -102,13 +101,10 @@ class AlbumCoverLoader : public QObject {
   QMutex mutex_;
   QQueue<Task> tasks_;
   QMap<QNetworkReply*, Task> remote_tasks_;
-  QMap<QString, Task> remote_spotify_tasks_;
   quint64 next_id_;
 
   NetworkAccessManager* network_;
 
-  bool connected_spotify_;
-
   static const int kMaxRedirects = 3;
 };
 
diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp
index 94f77a3..37c1cdf 100644
--- a/src/engines/gstenginepipeline.cpp
+++ b/src/engines/gstenginepipeline.cpp
@@ -29,8 +29,6 @@
 #include "core/signalchecker.h"
 #include "core/utilities.h"
 #include "internet/internetmodel.h"
-#include "internet/spotifyserver.h"
-#include "internet/spotifyservice.h"
 
 
 const int GstEnginePipeline::kGstStateTimeoutNanosecs = 10000000;
@@ -141,37 +139,11 @@ bool GstEnginePipeline::ReplaceDecodeBin(GstElement* new_bin) {
 bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) {
   GstElement* new_bin = NULL;
 
-  if (url.scheme() == "spotify") {
-    new_bin = gst_bin_new("spotify_bin");
-
-    // Create elements
-    GstElement* src = engine_->CreateElement("tcpserversrc", new_bin);
-    GstElement* gdp = engine_->CreateElement("gdpdepay", new_bin);
-    if (!src || !gdp)
-      return false;
-
-    // Pick a port number
-    const int port = Utilities::PickUnusedPort();
-    g_object_set(G_OBJECT(src), "host", "127.0.0.1", NULL);
-    g_object_set(G_OBJECT(src), "port", port, NULL);
-
-    // Link the elements
-    gst_element_link(src, gdp);
-
-    // Add a ghost pad
-    GstPad* pad = gst_element_get_static_pad(gdp, "src");
-    gst_element_add_pad(GST_ELEMENT(new_bin), gst_ghost_pad_new("src", pad));
-    gst_object_unref(GST_OBJECT(pad));
-
-    // Tell spotify to start sending data to us.
-    InternetModel::Service<SpotifyService>()->server()->StartPlaybackLater(url.toString(), port);
-  } else {
     new_bin = engine_->CreateElement("uridecodebin");
     g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), NULL);
     CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, this);
     CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this);
     CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, this);
-  }
 
   return ReplaceDecodeBin(new_bin);
 }
diff --git a/src/internet/internetmodel.cpp b/src/internet/internetmodel.cpp
index 289f591..ac9e3e0 100644
--- a/src/internet/internetmodel.cpp
+++ b/src/internet/internetmodel.cpp
@@ -30,7 +30,6 @@
 #include "savedradio.h"
 #include "somafmservice.h"
 #include "soundcloudservice.h"
-#include "spotifyservice.h"
 #include "subsonicservice.h"
 #include "core/closure.h"
 #include "core/logging.h"
@@ -94,7 +93,6 @@ InternetModel::InternetModel(Application* app, QObject* parent)
   AddService(new SkyFmService(app, this));
   AddService(new SomaFMService(app, this));
   AddService(new SoundCloudService(app, this));
-  AddService(new SpotifyService(app, this));
   AddService(new SubsonicService(app, this));
 #ifdef HAVE_UBUNTU_ONE
   AddService(new UbuntuOneService(app, this));
diff --git a/src/ui/about.cpp b/src/ui/about.cpp
index 53e42bd..49e7714 100644
--- a/src/ui/about.cpp
+++ b/src/ui/about.cpp
@@ -76,14 +76,9 @@ QString About::MakeHtml() const {
 
   ret += QString("<br />%1</p>").arg(tr("...and all the Amarok contributors"));
   ret += QString("<p><b>%1</b>").arg(tr("And:"));
-  ret += QString("<br /><a href=\"http://rainymood.com\">Rainy Mood</a>");
   ret += QString("<br /><a href=\"http://www.smitelli.com/?page=blog&p=54\">Scott Smitelli</a>");
   ret += QString("<br /><a href=\"http://hyperboleandahalf.blogspot.com\">Allie Brosh</a></p>");
 
-  ret += "<p>This product uses Music by Spotify but is not endorsed, certified "
-         "or otherwise approved in any way by Spotify. Spotify is the registered "
-         "trade mark of the Spotify Group.</p>";
-
   return ret;
 }
 
diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp
index dc0d84f..4a9335d 100644
--- a/src/ui/settingsdialog.cpp
+++ b/src/ui/settingsdialog.cpp
@@ -38,7 +38,6 @@
 #include "internet/digitallyimportedsettingspage.h"
 #include "internet/groovesharksettingspage.h"
 #include "internet/magnatunesettingspage.h"
-#include "internet/spotifysettingspage.h"
 #include "internet/subsonicsettingspage.h"
 #include "internet/ubuntuonesettingspage.h"
 #include "library/librarysettingspage.h"
@@ -174,7 +173,6 @@ SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, QWi
   AddPage(Page_Box, new BoxSettingsPage(this), providers);
 #endif
 
-  AddPage(Page_Spotify, new SpotifySettingsPage(this), providers);
   AddPage(Page_Magnatune, new MagnatuneSettingsPage(this), providers);
   AddPage(Page_DigitallyImported, new DigitallyImportedSettingsPage(this), providers);
   AddPage(Page_BackgroundStreams, new BackgroundStreamsSettingsPage(this), providers);
diff --git a/src/ui/settingsdialog.h b/src/ui/settingsdialog.h
index e9e709a..5485a37 100644
--- a/src/ui/settingsdialog.h
+++ b/src/ui/settingsdialog.h
@@ -69,7 +69,6 @@ public:
     Page_Library,
     Page_Lastfm,
     Page_Grooveshark,
-    Page_Spotify,
     Page_Magnatune,
     Page_DigitallyImported,
     Page_BackgroundStreams,