diff --git a/src/libtomahawk/AtticaManager.cpp b/src/libtomahawk/AtticaManager.cpp
index 5303fcd17..d80eaeab8 100644
--- a/src/libtomahawk/AtticaManager.cpp
+++ b/src/libtomahawk/AtticaManager.cpp
@@ -45,6 +45,8 @@ AtticaManager::AtticaManager( QObject* parent )
 
     // resolvers
     m_manager.addProviderFile( QUrl( "http://bakery.tomahawk-player.org:10480/resolvers/providers.xml" ) );
+
+    qRegisterMetaType< Attica::Content >( "Attica::Content" );
 }
 
 
@@ -274,6 +276,7 @@ AtticaManager::syncServerData()
                 if ( newerVersion( r.version, upstream.version() ) )
                 {
                     m_resolverStates[ id ].state = NeedsUpgrade;
+                    QMetaObject::invokeMethod( this, "upgradeResolver", Qt::QueuedConnection, Q_ARG( Attica::Content, upstream ) );
                 }
             }
         }
diff --git a/src/libtomahawk/AtticaManager.h b/src/libtomahawk/AtticaManager.h
index cb7179853..655ed7ffd 100644
--- a/src/libtomahawk/AtticaManager.h
+++ b/src/libtomahawk/AtticaManager.h
@@ -83,8 +83,6 @@ public:
     ResolverState resolverState( const Attica::Content& resolver ) const;
     QPixmap iconForResolver( const Attica::Content& id ); // Looks up in icon cache
 
-    void installResolver( const Attica::Content& resolver );
-    void upgradeResolver( const Attica::Content& resolver );
     void uninstallResolver( const Attica::Content& resolver );
     void uninstallResolver( const QString& pathToResolver );
     QString pathFromId( const QString& resolverId ) const;
@@ -92,6 +90,9 @@ public:
     void uploadRating( const Attica::Content& c );
     bool userHasRated( const Attica::Content& c ) const;
 
+public slots:
+    void installResolver( const Attica::Content& resolver );
+    void upgradeResolver( const Attica::Content& resolver );
 
 signals:
     void resolversReloaded( const Attica::Content::List& resolvers );
@@ -127,4 +128,6 @@ private:
     static AtticaManager* s_instance;
 };
 
+Q_DECLARE_METATYPE( Attica::Content );
+
 #endif // ATTICAMANAGER_H