diff --git a/src/libtomahawk/Source.cpp b/src/libtomahawk/Source.cpp
index 4be7dbd6f..c3336723b 100644
--- a/src/libtomahawk/Source.cpp
+++ b/src/libtomahawk/Source.cpp
@@ -107,7 +107,7 @@ Source::dbCollection() const
     if ( m_collections.length() )
     {
         foreach ( const collection_ptr& collection, m_collections )
-            if ( collection->type() == "databasecollection" )
+            if ( collection->backendType() == Collection::DatabaseCollectionType )
                 return collection; // We assume only one is a db collection. Now get off my lawn.
     }
 
diff --git a/src/libtomahawk/collection/Collection.h b/src/libtomahawk/collection/Collection.h
index 2bc58bd94..dc5cae784 100644
--- a/src/libtomahawk/collection/Collection.h
+++ b/src/libtomahawk/collection/Collection.h
@@ -53,10 +53,17 @@ public:
     Collection( const source_ptr& source, const QString& name, QObject* parent = 0 );
     virtual ~Collection();
 
+    enum BackendType
+    {
+        NullCollectionType = 0,
+        DatabaseCollectionType, //talks to a database, incl. LocalCollection
+        ScriptCollectionType    //performs operations through a resolver
+    };
+
     virtual QString name() const;
     virtual QString prettyName() const;
     virtual QString itemName() const;
-    virtual QString type() const { return QString(); }
+    virtual BackendType backendType() const { return NullCollectionType; }
     virtual QIcon icon() const;
     virtual QPixmap bigIcon() const; //for the ViewPage header
     virtual QString emptyText() const;
diff --git a/src/libtomahawk/database/DatabaseCollection.h b/src/libtomahawk/database/DatabaseCollection.h
index 8ba8865b0..a292ba475 100644
--- a/src/libtomahawk/database/DatabaseCollection.h
+++ b/src/libtomahawk/database/DatabaseCollection.h
@@ -40,7 +40,7 @@ public:
         qDebug() << Q_FUNC_INFO;
     }
 
-    virtual QString type() const { return "databasecollection"; }
+    virtual BackendType backendType() const { return DatabaseCollectionType; }
 
     virtual void loadPlaylists();
     virtual void loadAutoPlaylists();
diff --git a/src/libtomahawk/resolvers/ScriptCollection.h b/src/libtomahawk/resolvers/ScriptCollection.h
index d53a59e7c..556439db6 100644
--- a/src/libtomahawk/resolvers/ScriptCollection.h
+++ b/src/libtomahawk/resolvers/ScriptCollection.h
@@ -44,7 +44,7 @@ public:
 
     virtual QString prettyName() const;
     virtual QString itemName() const;
-    virtual QString type() const { return "scriptcollection"; }
+    virtual BackendType backendType() const { return ScriptCollectionType; }
     virtual QIcon icon() const;
     virtual QPixmap bigIcon() const;
 
diff --git a/src/sourcetree/items/SourceItem.cpp b/src/sourcetree/items/SourceItem.cpp
index 16f544f74..59c99c52d 100644
--- a/src/sourcetree/items/SourceItem.cpp
+++ b/src/sourcetree/items/SourceItem.cpp
@@ -376,7 +376,7 @@ SourceItem::performAddCollectionItem( const collection_ptr& collection )
                                                  boost::bind( &SourceItem::collectionClicked, this, collection ),
                                                  boost::bind( &SourceItem::getCollectionPage, this, collection ) );
 
-    if ( collection->type() == "databasecollection" )
+    if ( collection->backendType() == Collection::DatabaseCollectionType )
         item->setSortValue( -350 );
     else
         item->setSortValue( -340 );