[Pkg-cli-apps-commits] [SCM] banshee-community-extensions branch, experimental, updated. debian/1.9.0-1-11-gab3bbb8

Iain Lane laney at ubuntu.com
Thu Dec 23 19:28:11 UTC 2010


The following commit has been merged in the experimental branch:
commit f8f664d377cfb7fcf45d6bd915b3ea3f760a2a5a
Author: Iain Lane <laney at ubuntu.com>
Date:   Thu Dec 23 16:01:21 2010 +0000

    Imported Upstream version 1.9.1

diff --git a/AUTHORS b/AUTHORS
index 89888a9..b50839f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -6,6 +6,8 @@ Extension Maintainers:
                    Awn Marcos Almeida Jr
            ClutterFlow Mathijs Dumon
         CoverWallpaper David Corrales
+               Jamendo Bertrand Lorentz
+                       Janez Troha
      LastfmFingerprint Olivier Dufour
                    LCD André Gaul
                   Lirc Jean-Baptiste Lab
@@ -18,10 +20,9 @@ Extension Maintainers:
                 OpenVP Chris Howie
    RadioStationFetcher Akseli Mantila
         RandomByLastfm Raimo Radczewski
-             SoundMenu Bertrand Lorentz
         StreamRecorder Frank Ziegler
              Telepathy Neil Loknath
-Ubuntu One Music Store Jo Shields
+ ZeitgeistDataprovider Manish Sinha
 
 General Maintainers:
   Alexander Kojevnikov
@@ -34,6 +35,9 @@ Other Contributors:
   Andrés G. Aragoneses
   Chow Loong Jin
   Iain Lane
+  Jo Shields
   Patrick Niklaus
   Patrick van Staveren
+  Rodney Dawes
   Ruben Vermeersch
+  Samuel Gyger
diff --git a/Makefile.am b/Makefile.am
index 1496702..3a6c33f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,26 +50,7 @@ run:
 		banshee-1 --uninstalled --debug $(BANSHEE_DEV_OPTIONS) \
 	)
 
-if ENABLE_TESTS
-# ---------------
-# Unit Test Target
-# ---------------
-
-TEST_ASSEMBLIES = \
-	Banshee.Mirage.dll
-
-ENV_OPTIONS = TZ=America/Chicago LC_ALL=it_IT LANG=it_IT \
-			  LD_LIBRARY_PATH="$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
-			  MONO_PATH="$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}"
-
-RUNNER = for asm in $${TEST_ASSEMBLIES}; do echo -e "\033[1mRunning tests on $${asm}...\033[0m"; $(ENV_OPTIONS) nunit-console2 -nologo -noshadow $$asm; done
-
-test:
-	(cd bin; mkdir -p addins; cp *.dll* addins/; \
-		export TEST_ASSEMBLIES="$(TEST_ASSEMBLIES)"; $(RUNNER); \
-	)
-
-endif
+test: check
 
 # ---------------
 # Release Targets
diff --git a/Makefile.in b/Makefile.in
index c919511..e51a3ff 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -145,8 +145,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -210,8 +212,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -255,6 +255,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -289,12 +290,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -394,18 +395,6 @@ MAINTAINERCLEANFILES = \
 
 
 # ---------------
-# Unit Test Target
-# ---------------
- at ENABLE_TESTS_TRUE@TEST_ASSEMBLIES = \
- at ENABLE_TESTS_TRUE@	Banshee.Mirage.dll
-
- at ENABLE_TESTS_TRUE@ENV_OPTIONS = TZ=America/Chicago LC_ALL=it_IT LANG=it_IT \
- at ENABLE_TESTS_TRUE@			  LD_LIBRARY_PATH="$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
- at ENABLE_TESTS_TRUE@			  MONO_PATH="$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}"
-
- at ENABLE_TESTS_TRUE@RUNNER = for asm in $${TEST_ASSEMBLIES}; do echo -e "\033[1mRunning tests on $${asm}...\033[0m"; $(ENV_OPTIONS) nunit-console2 -nologo -noshadow $$asm; done
-
-# ---------------
 # Release Targets
 # ---------------
 RELEASE_WEB_USER = banshee
@@ -926,10 +915,7 @@ run:
 		banshee-1 --uninstalled --debug $(BANSHEE_DEV_OPTIONS) \
 	)
 
- at ENABLE_TESTS_TRUE@test:
- at ENABLE_TESTS_TRUE@	(cd bin; mkdir -p addins; cp *.dll* addins/; \
- at ENABLE_TESTS_TRUE@		export TEST_ASSEMBLIES="$(TEST_ASSEMBLIES)"; $(RUNNER); \
- at ENABLE_TESTS_TRUE@	)
+test: check
 
 prepare-release: distcheck
 	rm -rf release-data
diff --git a/NEWS b/NEWS
index 7f73a61..2eeed85 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,34 @@
-===============================
+=================================
+Version 1.9.1 - December 16, 2010
+=================================
+
+Contributors:
+Bertrand Lorentz, Chow Loong Jin, Gabriel Burt, Janez Troha, John Moore,
+Manish Sinha, Mathijs Dumon, Olivier Dufour, Rodney Dawes, Samuel Gyger
+
+New:
+* [Jamendo] Browse the Jamendo catalog, stream and download free music
+* [ZeitgeistDataprovider] Publish your Banshee activities into Zeitgeist
+
+Enhancements:
+* [LastfmFingerprint] Correct more information : album name, track number, etc.
+* [build] Various build/unit test fixes
+
+Bugs Fixed:
+* [Ampache] Improve handling of large libraries (bgo#636069)
+* [Ampache] Reduce the initial load time by loading songs on demand (bgo#636041)
+* [LastfmFingerprint] Fix NRE when fingerprint request times out (bgo#635899)
+* [Lirc] Add a dllmap for lirc_client (bgo#635848)
+* [Lyrics] Properly trim artist name and track title and fix NRE (bgo#635616)
+* [Lyrics] Change regex on LyricWiki to show only original language (bgo#635434)
+* [Lyrics] Throw a NetworkUnavailableException when there is no network (bgo#634787)
+
+The SoundMenu and UbuntuOneMusicStore extensions have been removed, as they are
+now core extensions and part of the main Banshee source tree.
+
+=================================
 Version 1.9.0 - November 10, 2010
-===============================
+=================================
 
 Contributors:
 Bertrand Lorentz, John Moore, Olivier Dufour, Raimo Radczewski
diff --git a/README b/README
index 55f90da..494b48d 100644
--- a/README
+++ b/README
@@ -32,7 +32,7 @@ Points of Contact
 Dependencies
 =======================
 
-Banshee 1.7.4 and its devel packages are required.  Some extensions have
+Banshee 1.9.1 and its devel packages are required.  Some extensions have
 specific requirements.
 
 AppIndicator
@@ -71,8 +71,8 @@ Telepathy
   telepathy-mission-control-5 >= 5.3.1
   see src/Telepathy/README for more details
 
-UbuntuOneMusicStore
-  ubuntuone-sharp-1.0
+ZeitgeistDataprovider
+  zeitgeist-sharp
 
 =======================
 Create a New Extension
diff --git a/aclocal.m4 b/aclocal.m4
index e4cc345..a40c87d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -9912,6 +9912,7 @@ m4_include([build/m4/extensions/banshee.m4])
 m4_include([build/m4/extensions/clutterflow.m4])
 m4_include([build/m4/extensions/common.m4])
 m4_include([build/m4/extensions/coverwallpaper.m4])
+m4_include([build/m4/extensions/jamendo.m4])
 m4_include([build/m4/extensions/lastfmfingerprint.m4])
 m4_include([build/m4/extensions/lcd.m4])
 m4_include([build/m4/extensions/lirc.m4])
@@ -9922,10 +9923,9 @@ m4_include([build/m4/extensions/mirage.m4])
 m4_include([build/m4/extensions/openvp.m4])
 m4_include([build/m4/extensions/radiostationfetcher.m4])
 m4_include([build/m4/extensions/randombylastfm.m4])
-m4_include([build/m4/extensions/soundmenu.m4])
 m4_include([build/m4/extensions/streamrecorder.m4])
 m4_include([build/m4/extensions/telepathy.m4])
-m4_include([build/m4/extensions/ubuntuonemusicstore.m4])
+m4_include([build/m4/extensions/zeitgeistdp.m4])
 m4_include([build/m4/shave/shave.m4])
 m4_include([build/m4/shamrock/expansions.m4])
 m4_include([build/m4/shamrock/gnome-doc.m4])
diff --git a/build/Makefile.in b/build/Makefile.in
index 5f8e51c..daf2e2f 100644
--- a/build/Makefile.in
+++ b/build/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -128,8 +128,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -193,8 +195,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -238,6 +238,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -272,12 +273,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/build/build.rules.mk b/build/build.rules.mk
index 653a6eb..4b4c104 100644
--- a/build/build.rules.mk
+++ b/build/build.rules.mk
@@ -18,10 +18,25 @@ ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
 INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
 
 if ENABLE_TESTS
-    LINK += " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
-    ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+LINK += " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
+ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+
+test: $(ASSEMBLY_FILE)
+	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+	fi
+
+else
+
+test:
+
 endif
 
+check: test
+
+
 FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
 DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
 
@@ -73,7 +88,7 @@ uninstall-hook: $(THEME_ICONS_SOURCE)
 
 EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
 
-CLEANFILES = $(OUTPUT_FILES)
+CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 DISTCLEANFILES = *.pidb
 MAINTAINERCLEANFILES = Makefile.in
 
diff --git a/build/m4/Makefile.in b/build/m4/Makefile.in
index a23fe14..2429ec3 100644
--- a/build/m4/Makefile.in
+++ b/build/m4/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -88,8 +88,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -153,8 +155,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -198,6 +198,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -232,12 +233,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/build/m4/extensions/banshee.m4 b/build/m4/extensions/banshee.m4
index e13a313..f350038 100644
--- a/build/m4/extensions/banshee.m4
+++ b/build/m4/extensions/banshee.m4
@@ -1,14 +1,16 @@
 AC_DEFUN([BCE_FIND_BANSHEE],
 [
 	BANSHEE_LIBDIR=`$PKG_CONFIG banshee-1-core --variable=bansheedir`
-	SYSTEM_EXTENSIONS=$BANSHEE_LIBDIR/Extensions
-	REL_EXTENSIONS_DIR=`basename $SYSTEM_EXTENSIONS`
-	REL_BANSHEE_DIR=`echo "$SYSTEM_EXTENSIONS" | sed -e "s|\/$REL_EXTENSIONS_DIR||"`
+	BANSHEE_EXTDIR=$BANSHEE_LIBDIR/Extensions
+	REL_EXTENSIONS_DIR=`basename $BANSHEE_EXTDIR`
+	REL_BANSHEE_DIR=`echo "$BANSHEE_EXTDIR" | sed -e "s|\/$REL_EXTENSIONS_DIR||"`
 	REL_BANSHEE_DIR=`basename $REL_BANSHEE_DIR`
 	REL_EXTENSIONS_DIR=$REL_BANSHEE_DIR/$REL_EXTENSIONS_DIR
 
 	EXTENSION_DIR=$libdir/$REL_EXTENSIONS_DIR
 	AC_SUBST(EXTENSION_DIR)
+	AC_SUBST(BANSHEE_LIBDIR)
+	AC_SUBST(BANSHEE_EXTDIR)
 
 	expanded_libdir=`( case $prefix in NONE) prefix=$ac_default_prefix ;; *) ;; esac
 			case $exec_prefix in NONE) exec_prefix=$prefix ;; *) ;; esac
diff --git a/build/m4/extensions/jamendo.m4 b/build/m4/extensions/jamendo.m4
new file mode 100644
index 0000000..6c01a38
--- /dev/null
+++ b/build/m4/extensions/jamendo.m4
@@ -0,0 +1,20 @@
+AC_DEFUN([BCE_JAMENDO],
+[
+	BCE_ARG_DISABLE([Jamendo], [yes])
+
+	BCE_CHECK_EXTENSION_DEP([Jamendo], [BANSHEE_WEBBROWSER],
+		[banshee-1-webbrowser],
+		[banshee-1-webbrowser was not found. Please install it or disable the CoverWallpaper extension by passing --disable-jamendo])
+
+	if test "x$enable_Jamendo" = "xtry" \
+		&& test "x$have_BANSHEE_WEBBROWSER" = "xyes"; then
+		enable_Jamendo=yes
+	fi
+
+	if test "x$enable_Jamendo" = "xyes"; then
+		AM_CONDITIONAL(ENABLE_JAMENDO, true)
+	else
+		AM_CONDITIONAL(ENABLE_JAMENDO, false)
+	fi
+])
+
diff --git a/build/m4/extensions/lastfmfingerprint.m4 b/build/m4/extensions/lastfmfingerprint.m4
index d4b3f86..32d9723 100644
--- a/build/m4/extensions/lastfmfingerprint.m4
+++ b/build/m4/extensions/lastfmfingerprint.m4
@@ -1,9 +1,8 @@
 AC_DEFUN([BCE_LASTFMFINGERPRINT],
 [
+	AC_REQUIRE([AC_PROG_CXX])
 	BCE_ARG_DISABLE([LastfmFingerprint], [try])
 
-	AC_PROG_CXX
-
 	BCE_CHECK_EXTENSION_DEP([LastfmFingerprint], [GLIB],
 		[glib-2.0],
 		[The glib library was not found. Please install it or disable the LastfmFingerprint extension by passing --disable-lastfmfingerprint])
diff --git a/build/m4/extensions/soundmenu.m4 b/build/m4/extensions/soundmenu.m4
deleted file mode 100644
index 6b2177f..0000000
--- a/build/m4/extensions/soundmenu.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-AC_DEFUN([BCE_SOUNDMENU],
-[
-	BCE_ARG_DISABLE([SoundMenu], [try])
-
-	BCE_CHECK_EXTENSION_DEP([SoundMenu], [INDICATESHARP],
-		[indicate-sharp-0.1 >= 0.4.1],
-		[indicate-sharp was not found. Please install it or disable the SoundMenu extension by passing --disable-soundmenu])
-
-	BCE_CHECK_EXTENSION_DEP([SoundMenu], [NOTIFYSHARP],
-		[notify-sharp],
-		[Notify-sharp was not found. Please install it or disable the SoundMenu extension by passing --disable-soundmenu])
-
-	if test "x$enable_SoundMenu" = "xtry" \
-		&& test "x$have_INDICATESHARP" = "xyes" \
-		&& test "x$have_NOTIFYSHARP" = "xyes"; then
-		enable_SoundMenu=yes
-	fi
-
-	if test "x$enable_SoundMenu" = "xyes"; then
-		AM_CONDITIONAL(ENABLE_SOUNDMENU, true)
-	else
-		enable_SoundMenu=no
-		AM_CONDITIONAL(ENABLE_SOUNDMENU, false)
-	fi
-])
-
diff --git a/build/m4/extensions/ubuntuonemusicstore.m4 b/build/m4/extensions/ubuntuonemusicstore.m4
deleted file mode 100644
index 6bb86a6..0000000
--- a/build/m4/extensions/ubuntuonemusicstore.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-AC_DEFUN([BCE_U1MS],
-[
-	BCE_ARG_DISABLE([UbuntuOneMusicStore], [try])
-
-	BCE_CHECK_EXTENSION_DEP([UbuntuOneMusicStore], [UBUNTUONESHARP],
-		[ubuntuone-sharp-1.0],
-		[UbuntuOne-sharp was not found. Please install it or disable the UbuntuOneMusicStore extension by passing --disable-ubuntuonemusicstore])
-
-	if test "x$enable_UbuntuOneMusicStore" = "xtry" \
-		&& test "x$have_UBUNTUONESHARP" = "xyes"; then
-		enable_UbuntuOneMusicStore=yes
-	fi
-
-	if test "x$enable_UbuntuOneMusicStore" = "xyes"; then
-		AM_CONDITIONAL(ENABLE_U1MS, true)
-	else
-		enable_UbuntuOneMusicStore=no
-		AM_CONDITIONAL(ENABLE_U1MS, false)
-	fi
-])
-
diff --git a/build/m4/extensions/zeitgeistdp.m4 b/build/m4/extensions/zeitgeistdp.m4
new file mode 100644
index 0000000..cba67f9
--- /dev/null
+++ b/build/m4/extensions/zeitgeistdp.m4
@@ -0,0 +1,20 @@
+AC_DEFUN([BCE_ZEITGEISTDP],
+[
+	BCE_ARG_DISABLE([ZeitgeistDataprovider], [try])
+
+	BCE_CHECK_EXTENSION_DEP([ZeitgeistDataprovider], [ZEITGEIST_SHARP],
+		[zeitgeist-sharp],
+		[zeitgeist-sharp was not found. Please install it or disable the ZeitgeistDp extension by passing --disable-zeitgeistdataprovider])
+
+	if test "x$enable_ZeitgeistDataprovider" = "xtry" \
+		&& test "x$have_ZEITGEIST_SHARP" = "xyes"; then
+		enable_ZeitgeistDataprovider=yes
+	fi
+
+	if test "x$enable_ZeitgeistDataprovider" = "xyes"; then
+		AM_CONDITIONAL(ENABLE_ZEITGEISTDATAPROVIDER, true)
+	else
+		AM_CONDITIONAL(ENABLE_ZEITGEISTDATAPROVIDER, false)
+	fi
+])
+
diff --git a/build/m4/shamrock/nunit.m4 b/build/m4/shamrock/nunit.m4
index 582ca69..9030d70 100644
--- a/build/m4/shamrock/nunit.m4
+++ b/build/m4/shamrock/nunit.m4
@@ -12,10 +12,20 @@ AC_DEFUN([SHAMROCK_CHECK_UNIT_TESTS],
 		PKG_CHECK_MODULES(NUNIT, nunit >= $NUNIT_REQUIRED,
 			do_tests="yes", do_tests="no")
 
-		AC_SUBST(NUNIT_LIBS)
+		AC_PATH_PROG([NUNIT_CONSOLE], [nunit-console2], [none])
+        if test "x$NUNIT_CONSOLE" = "xnone"; then
+			AC_PATH_PROG([NUNIT_CONSOLE], [nunit-console], [none])
+		fi
+
+		if test "x$NUNIT_CONSOLE" = "xnone"; then
+			do_tests="no"
+		fi
+
+		AC_SUBST([NUNIT_CONSOLE])
+		AC_SUBST([NUNIT_LIBS])
 		AM_CONDITIONAL(ENABLE_TESTS, test "x$do_tests" = "xyes")
 
-		if test "x$do_tests" = "xno"; then
+		if test "x$do_tests" = "xno" && test "x$NUNIT_CONSOLE" != "xnone"; then
 			PKG_CHECK_MODULES(NUNIT, mono-nunit >= 2.4,
 				do_tests="yes", do_tests="no")
 
diff --git a/configure b/configure
index b7e5995..65e4e27 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for banshee-community-extensions 1.9.0.
+# Generated by GNU Autoconf 2.67 for banshee-community-extensions 1.9.1.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=banshee&component=Community%20Extensions>.
 #
@@ -702,8 +702,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='banshee-community-extensions'
 PACKAGE_TARNAME='banshee-community-extensions'
-PACKAGE_VERSION='1.9.0'
-PACKAGE_STRING='banshee-community-extensions 1.9.0'
+PACKAGE_VERSION='1.9.1'
+PACKAGE_STRING='banshee-community-extensions 1.9.1'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=banshee&component=Community%20Extensions'
 PACKAGE_URL=''
 
@@ -759,10 +759,10 @@ BUILD_TIME
 BUILD_HOST_CPU
 BUILD_HOST_OS
 BUILD_VENDOR_ID
-ENABLE_U1MS_FALSE
-ENABLE_U1MS_TRUE
-UBUNTUONESHARP_LIBS
-UBUNTUONESHARP_CFLAGS
+ENABLE_ZEITGEISTDATAPROVIDER_FALSE
+ENABLE_ZEITGEISTDATAPROVIDER_TRUE
+ZEITGEIST_SHARP_LIBS
+ZEITGEIST_SHARP_CFLAGS
 ENABLE_TELEPATHY_FALSE
 ENABLE_TELEPATHY_TRUE
 MONO_LIBS
@@ -771,10 +771,6 @@ NOTIFY_SHARP_LIBS
 NOTIFY_SHARP_CFLAGS
 ENABLE_STREAMRECORDER_FALSE
 ENABLE_STREAMRECORDER_TRUE
-ENABLE_SOUNDMENU_FALSE
-ENABLE_SOUNDMENU_TRUE
-INDICATESHARP_LIBS
-INDICATESHARP_CFLAGS
 ENABLE_RANDOMBYLASTFM_FALSE
 ENABLE_RANDOMBYLASTFM_TRUE
 ENABLE_RADIOSTATIONFETCHER_FALSE
@@ -794,8 +790,6 @@ ENABLE_MAGNATUNE_FALSE
 ENABLE_MAGNATUNE_TRUE
 ENABLE_LYRICS_FALSE
 ENABLE_LYRICS_TRUE
-BANSHEE_WEBBROWSER_LIBS
-BANSHEE_WEBBROWSER_CFLAGS
 GCONF_SHARP_20_LIBS
 GCONF_SHARP_20_CFLAGS
 ENABLE_LIVERADIO_FALSE
@@ -816,13 +810,10 @@ FFTW3F_LIBS
 FFTW3F_CFLAGS
 GLIB_LIBS
 GLIB_CFLAGS
-CXXCPP
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-ac_ct_CXX
-CXXFLAGS
-CXX
+ENABLE_JAMENDO_FALSE
+ENABLE_JAMENDO_TRUE
+BANSHEE_WEBBROWSER_LIBS
+BANSHEE_WEBBROWSER_CFLAGS
 ENABLE_COVERWALLPAPER_FALSE
 ENABLE_COVERWALLPAPER_TRUE
 GCONFSHARP_LIBS
@@ -846,6 +837,7 @@ ENABLE_AMPACHE_FALSE
 ENABLE_AMPACHE_TRUE
 ENABLE_ALARMCLOCK_FALSE
 ENABLE_ALARMCLOCK_TRUE
+NUNIT_CONSOLE
 NUNIT_LIBS
 NUNIT_CFLAGS
 ENABLE_TESTS_FALSE
@@ -874,6 +866,15 @@ GCONF_SCHEMAS_INSTALL_TRUE
 GCONF_SCHEMA_FILE_DIR
 GCONF_SCHEMA_CONFIG_SOURCE
 GCONFTOOL
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+BANSHEE_EXTDIR
+BANSHEE_LIBDIR
 EXTENSION_DIR
 BANSHEE_LIBS
 BANSHEE_CFLAGS
@@ -1065,6 +1066,7 @@ enable_appindicator
 enable_awn
 enable_clutterflow
 enable_coverwallpaper
+enable_jamendo
 enable_lastfmfingerprint
 enable_lcd
 enable_lirc
@@ -1075,10 +1077,9 @@ enable_mirage
 enable_openvp
 enable_radiostationfetcher
 enable_randombylastfm
-enable_soundmenu
 enable_streamrecorder
 enable_telepathy
-enable_ubuntuonemusicstore
+enable_zeitgeistdataprovider
 with_vendor_build_id
 enable_shave
 '
@@ -1100,6 +1101,10 @@ MONO_MODULE_CFLAGS
 MONO_MODULE_LIBS
 BANSHEE_CFLAGS
 BANSHEE_LIBS
+CXX
+CXXFLAGS
+CCC
+CXXCPP
 NUNIT_CFLAGS
 NUNIT_LIBS
 APPINDICATORSHARP_CFLAGS
@@ -1112,10 +1117,8 @@ BANSHEE_NOWPLAYING_CFLAGS
 BANSHEE_NOWPLAYING_LIBS
 GCONFSHARP_CFLAGS
 GCONFSHARP_LIBS
-CXX
-CXXFLAGS
-CCC
-CXXCPP
+BANSHEE_WEBBROWSER_CFLAGS
+BANSHEE_WEBBROWSER_LIBS
 GLIB_CFLAGS
 GLIB_LIBS
 FFTW3F_CFLAGS
@@ -1128,22 +1131,18 @@ GSTREAMER_CFLAGS
 GSTREAMER_LIBS
 GCONF_SHARP_20_CFLAGS
 GCONF_SHARP_20_LIBS
-BANSHEE_WEBBROWSER_CFLAGS
-BANSHEE_WEBBROWSER_LIBS
 TAO_OPENGL_CFLAGS
 TAO_OPENGL_LIBS
 TAO_FREEGLUT_CFLAGS
 TAO_FREEGLUT_LIBS
 TAO_SDL_CFLAGS
 TAO_SDL_LIBS
-INDICATESHARP_CFLAGS
-INDICATESHARP_LIBS
 NOTIFY_SHARP_CFLAGS
 NOTIFY_SHARP_LIBS
 MONO_CFLAGS
 MONO_LIBS
-UBUNTUONESHARP_CFLAGS
-UBUNTUONESHARP_LIBS'
+ZEITGEIST_SHARP_CFLAGS
+ZEITGEIST_SHARP_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1686,7 +1685,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures banshee-community-extensions 1.9.0 to adapt to many kinds of systems.
+\`configure' configures banshee-community-extensions 1.9.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1757,7 +1756,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of banshee-community-extensions 1.9.0:";;
+     short | recursive ) echo "Configuration of banshee-community-extensions 1.9.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1789,6 +1788,7 @@ Optional Features:
   --disable-clutterflow   Do not build the ClutterFlow extension
   --disable-coverwallpaper
                           Do not build the CoverWallpaper extension
+  --disable-jamendo       Do not build the Jamendo extension
   --disable-lastfmfingerprint
                           Do not build the LastfmFingerprint extension
   --disable-lcd           Do not build the LCD extension
@@ -1802,12 +1802,11 @@ Optional Features:
                           Do not build the RadioStationFetcher extension
   --disable-randombylastfm
                           Do not build the RandomByLastfm extension
-  --disable-soundmenu     Do not build the SoundMenu extension
   --disable-streamrecorder
                           Do not build the StreamRecorder extension
   --disable-telepathy     Do not build the Telepathy extension
-  --disable-ubuntuonemusicstore
-                          Do not build the UbuntuOneMusicStore extension
+  --disable-zeitgeistdataprovider
+                          Do not build the ZeitgeistDataprovider extension
   --enable-shave          use shave to make the build pretty [[default=yes]]
 
 Optional Packages:
@@ -1853,6 +1852,9 @@ Some influential environment variables:
               C compiler flags for BANSHEE, overriding pkg-config
   BANSHEE_LIBS
               linker flags for BANSHEE, overriding pkg-config
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
   NUNIT_CFLAGS
               C compiler flags for NUNIT, overriding pkg-config
   NUNIT_LIBS  linker flags for NUNIT, overriding pkg-config
@@ -1876,9 +1878,10 @@ Some influential environment variables:
               C compiler flags for GCONFSHARP, overriding pkg-config
   GCONFSHARP_LIBS
               linker flags for GCONFSHARP, overriding pkg-config
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
+  BANSHEE_WEBBROWSER_CFLAGS
+              C compiler flags for BANSHEE_WEBBROWSER, overriding pkg-config
+  BANSHEE_WEBBROWSER_LIBS
+              linker flags for BANSHEE_WEBBROWSER, overriding pkg-config
   GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
   GLIB_LIBS   linker flags for GLIB, overriding pkg-config
   FFTW3F_CFLAGS
@@ -1900,10 +1903,6 @@ Some influential environment variables:
               C compiler flags for GCONF_SHARP_20, overriding pkg-config
   GCONF_SHARP_20_LIBS
               linker flags for GCONF_SHARP_20, overriding pkg-config
-  BANSHEE_WEBBROWSER_CFLAGS
-              C compiler flags for BANSHEE_WEBBROWSER, overriding pkg-config
-  BANSHEE_WEBBROWSER_LIBS
-              linker flags for BANSHEE_WEBBROWSER, overriding pkg-config
   TAO_OPENGL_CFLAGS
               C compiler flags for TAO_OPENGL, overriding pkg-config
   TAO_OPENGL_LIBS
@@ -1916,20 +1915,16 @@ Some influential environment variables:
               C compiler flags for TAO_SDL, overriding pkg-config
   TAO_SDL_LIBS
               linker flags for TAO_SDL, overriding pkg-config
-  INDICATESHARP_CFLAGS
-              C compiler flags for INDICATESHARP, overriding pkg-config
-  INDICATESHARP_LIBS
-              linker flags for INDICATESHARP, overriding pkg-config
   NOTIFY_SHARP_CFLAGS
               C compiler flags for NOTIFY_SHARP, overriding pkg-config
   NOTIFY_SHARP_LIBS
               linker flags for NOTIFY_SHARP, overriding pkg-config
   MONO_CFLAGS C compiler flags for MONO, overriding pkg-config
   MONO_LIBS   linker flags for MONO, overriding pkg-config
-  UBUNTUONESHARP_CFLAGS
-              C compiler flags for UBUNTUONESHARP, overriding pkg-config
-  UBUNTUONESHARP_LIBS
-              linker flags for UBUNTUONESHARP, overriding pkg-config
+  ZEITGEIST_SHARP_CFLAGS
+              C compiler flags for ZEITGEIST_SHARP, overriding pkg-config
+  ZEITGEIST_SHARP_LIBS
+              linker flags for ZEITGEIST_SHARP, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1997,7 +1992,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-banshee-community-extensions configure 1.9.0
+banshee-community-extensions configure 1.9.1
 generated by GNU Autoconf 2.67
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2272,97 +2267,6 @@ fi
 
 } # ac_fn_c_try_run
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval "test \"\${$3+set}\"" = set; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------------------------------------------------------------------- ##
-## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=banshee&component=Community%20Extensions ##
-## ------------------------------------------------------------------------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_mongrel
-
 # ac_fn_cxx_try_compile LINENO
 # ----------------------------
 # Try to compile conftest.$ac_ext, and return whether this succeeded.
@@ -2483,11 +2387,102 @@ fi
   as_fn_set_status $ac_retval
 
 } # ac_fn_cxx_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval "test \"\${$3+set}\"" = set; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=banshee&component=Community%20Extensions ##
+## ------------------------------------------------------------------------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by banshee-community-extensions $as_me 1.9.0, which was
+It was created by banshee-community-extensions $as_me 1.9.1, which was
 generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
@@ -3303,7 +3298,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='banshee-community-extensions'
- VERSION='1.9.0'
+ VERSION='1.9.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5670,13 +5665,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5673: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5668: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5676: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5671: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5679: output\"" >&5)
+  (eval echo "\"\$as_me:5674: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -6881,7 +6876,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6884 "configure"' > conftest.$ac_ext
+  echo '#line 6879 "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8406,11 +8401,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8409: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8404: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8413: \$? = $ac_status" >&5
+   echo "$as_me:8408: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8745,11 +8740,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8748: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8743: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8752: \$? = $ac_status" >&5
+   echo "$as_me:8747: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8850,11 +8845,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8853: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8848: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8857: \$? = $ac_status" >&5
+   echo "$as_me:8852: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8905,11 +8900,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8908: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8903: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8912: \$? = $ac_status" >&5
+   echo "$as_me:8907: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11289,7 +11284,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11292 "configure"
+#line 11287 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11385,7 +11380,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11388 "configure"
+#line 11383 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11614,7 +11609,7 @@ CC="$lt_save_CC"
 
 
 
-DISTCHECK_CONFIGURE_FLAGS="--enable-release"
+DISTCHECK_CONFIGURE_FLAGS="--enable-release --enable-tests"
 
 
 
@@ -12267,12 +12262,12 @@ if test -n "$BANSHEE_CFLAGS"; then
     pkg_cv_BANSHEE_CFLAGS="$BANSHEE_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-thickclient >= 1.7.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "banshee-1-thickclient >= 1.7.4") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-thickclient >= 1.9.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-thickclient >= 1.9.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_BANSHEE_CFLAGS=`$PKG_CONFIG --cflags "banshee-1-thickclient >= 1.7.4" 2>/dev/null`
+  pkg_cv_BANSHEE_CFLAGS=`$PKG_CONFIG --cflags "banshee-1-thickclient >= 1.9.1" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -12283,12 +12278,12 @@ if test -n "$BANSHEE_LIBS"; then
     pkg_cv_BANSHEE_LIBS="$BANSHEE_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-thickclient >= 1.7.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "banshee-1-thickclient >= 1.7.4") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-thickclient >= 1.9.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-thickclient >= 1.9.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_BANSHEE_LIBS=`$PKG_CONFIG --libs "banshee-1-thickclient >= 1.7.4" 2>/dev/null`
+  pkg_cv_BANSHEE_LIBS=`$PKG_CONFIG --libs "banshee-1-thickclient >= 1.9.1" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -12308,14 +12303,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        BANSHEE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "banshee-1-thickclient >= 1.7.4" 2>&1`
+	        BANSHEE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "banshee-1-thickclient >= 1.9.1" 2>&1`
         else
-	        BANSHEE_PKG_ERRORS=`$PKG_CONFIG --print-errors "banshee-1-thickclient >= 1.7.4" 2>&1`
+	        BANSHEE_PKG_ERRORS=`$PKG_CONFIG --print-errors "banshee-1-thickclient >= 1.9.1" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$BANSHEE_PKG_ERRORS" >&5
 
-	as_fn_error $? "Package requirements (banshee-1-thickclient >= 1.7.4) were not met:
+	as_fn_error $? "Package requirements (banshee-1-thickclient >= 1.9.1) were not met:
 
 $BANSHEE_PKG_ERRORS
 
@@ -12351,15 +12346,17 @@ fi
 
 
 	BANSHEE_LIBDIR=`$PKG_CONFIG banshee-1-core --variable=bansheedir`
-	SYSTEM_EXTENSIONS=$BANSHEE_LIBDIR/Extensions
-	REL_EXTENSIONS_DIR=`basename $SYSTEM_EXTENSIONS`
-	REL_BANSHEE_DIR=`echo "$SYSTEM_EXTENSIONS" | sed -e "s|\/$REL_EXTENSIONS_DIR||"`
+	BANSHEE_EXTDIR=$BANSHEE_LIBDIR/Extensions
+	REL_EXTENSIONS_DIR=`basename $BANSHEE_EXTDIR`
+	REL_BANSHEE_DIR=`echo "$BANSHEE_EXTDIR" | sed -e "s|\/$REL_EXTENSIONS_DIR||"`
 	REL_BANSHEE_DIR=`basename $REL_BANSHEE_DIR`
 	REL_EXTENSIONS_DIR=$REL_BANSHEE_DIR/$REL_EXTENSIONS_DIR
 
 	EXTENSION_DIR=$libdir/$REL_EXTENSIONS_DIR
 
 
+
+
 	expanded_libdir=`( case $prefix in NONE) prefix=$ac_default_prefix ;; *) ;; esac
 			case $exec_prefix in NONE) exec_prefix=$prefix ;; *) ;; esac
 			eval echo $libdir )`
@@ -13090,1779 +13087,6 @@ else
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-
-# Check whether --enable-gnome was given.
-if test "${enable_gnome+set}" = set; then :
-  enableval=$enable_gnome;
-else
-  enable_gnome="yes"
-fi
-
-if test "x$enable_gnome" = "xyes"; then
-	# Extract the first word of "gconftool-2", so it can be a program name with args.
-set dummy gconftool-2; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GCONFTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GCONFTOOL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_GCONFTOOL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no"
-  ;;
-esac
-fi
-GCONFTOOL=$ac_cv_path_GCONFTOOL
-if test -n "$GCONFTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5
-$as_echo "$GCONFTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
-    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-  else
-    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
-  fi
-
-
-# Check whether --with-gconf-source was given.
-if test "${with_gconf_source+set}" = set; then :
-  withval=$with_gconf_source; GCONF_SCHEMA_CONFIG_SOURCE="$withval"
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5
-$as_echo "Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6; }
-
-  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
-    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
-  fi
-
-
-# Check whether --with-gconf-schema-file-dir was given.
-if test "${with_gconf_schema_file_dir+set}" = set; then :
-  withval=$with_gconf_schema_file_dir; GCONF_SCHEMA_FILE_DIR="$withval"
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5
-$as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6; }
-
-  # Check whether --enable-schemas-install was given.
-if test "${enable_schemas_install+set}" = set; then :
-  enableval=$enable_schemas_install; case ${enableval} in
-       yes|no) ;;
-       *) as_fn_error $? "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5  ;;
-      esac
-fi
-
-   if test "$enable_schemas_install" != no; then
-  GCONF_SCHEMAS_INSTALL_TRUE=
-  GCONF_SCHEMAS_INSTALL_FALSE='#'
-else
-  GCONF_SCHEMAS_INSTALL_TRUE='#'
-  GCONF_SCHEMAS_INSTALL_FALSE=
-fi
-
-
-	 if true; then
-  ENABLE_GNOME_TRUE=
-  ENABLE_GNOME_FALSE='#'
-else
-  ENABLE_GNOME_TRUE='#'
-  ENABLE_GNOME_FALSE=
-fi
-
-else
-	 if false; then
-  GCONF_SCHEMAS_INSTALL_TRUE=
-  GCONF_SCHEMAS_INSTALL_FALSE='#'
-else
-  GCONF_SCHEMAS_INSTALL_TRUE='#'
-  GCONF_SCHEMAS_INSTALL_FALSE=
-fi
-
-	 if false; then
-  ENABLE_GNOME_TRUE=
-  ENABLE_GNOME_FALSE='#'
-else
-  ENABLE_GNOME_TRUE='#'
-  ENABLE_GNOME_FALSE=
-fi
-
-fi
-
-
-	ALL_LINGUAS=`grep -v '^#' $srcdir/po/LINGUAS | $SED ':a;N;$!ba;s/\n/ /g; s/[ ]+/ /g' | xargs`
-	GETTEXT_PACKAGE=$PACKAGE
-
-
-cat >>confdefs.h <<_ACEOF
-#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
-_ACEOF
-
-
-   for ac_header in locale.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
-if test "x$ac_cv_header_locale_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALE_H 1
-_ACEOF
-
-fi
-
-done
-
-    if test $ac_cv_header_locale_h = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
-$as_echo_n "checking for LC_MESSAGES... " >&6; }
-if test "${am_cv_val_LC_MESSAGES+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <locale.h>
-int
-main ()
-{
-return LC_MESSAGES
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_val_LC_MESSAGES=yes
-else
-  am_cv_val_LC_MESSAGES=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
-$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
-    if test $am_cv_val_LC_MESSAGES = yes; then
-
-$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
-
-    fi
-  fi
-     USE_NLS=yes
-
-
-    gt_cv_have_gettext=no
-
-    CATOBJEXT=NONE
-    XGETTEXT=:
-    INTLLIBS=
-
-    ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
-if test "x$ac_cv_header_libintl_h" = x""yes; then :
-  gt_cv_func_dgettext_libintl="no"
-      libintl_extra_libs=""
-
-      #
-      # First check in libc
-      #
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
-$as_echo_n "checking for ngettext in libc... " >&6; }
-if test "${gt_cv_func_ngettext_libc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libintl.h>
-
-int
-main ()
-{
-return !ngettext ("","", 1)
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gt_cv_func_ngettext_libc=yes
-else
-  gt_cv_func_ngettext_libc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
-$as_echo "$gt_cv_func_ngettext_libc" >&6; }
-
-      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
-$as_echo_n "checking for dgettext in libc... " >&6; }
-if test "${gt_cv_func_dgettext_libc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libintl.h>
-
-int
-main ()
-{
-return !dgettext ("","")
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gt_cv_func_dgettext_libc=yes
-else
-  gt_cv_func_dgettext_libc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
-$as_echo "$gt_cv_func_dgettext_libc" >&6; }
-      fi
-
-      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
-        for ac_func in bind_textdomain_codeset
-do :
-  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_BIND_TEXTDOMAIN_CODESET 1
-_ACEOF
-
-fi
-done
-
-      fi
-
-      #
-      # If we don't have everything we want, check in libintl
-      #
-      if test "$gt_cv_func_dgettext_libc" != "yes" \
-	 || test "$gt_cv_func_ngettext_libc" != "yes" \
-         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
-$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char bindtextdomain ();
-int
-main ()
-{
-return bindtextdomain ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_bindtextdomain=yes
-else
-  ac_cv_lib_intl_bindtextdomain=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
-$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
-if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
-$as_echo_n "checking for ngettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ngettext ();
-int
-main ()
-{
-return ngettext ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_ngettext=yes
-else
-  ac_cv_lib_intl_ngettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
-$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
-$as_echo_n "checking for dgettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_dgettext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dgettext ();
-int
-main ()
-{
-return dgettext ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_dgettext=yes
-else
-  ac_cv_lib_intl_dgettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
-$as_echo "$ac_cv_lib_intl_dgettext" >&6; }
-if test "x$ac_cv_lib_intl_dgettext" = x""yes; then :
-  gt_cv_func_dgettext_libintl=yes
-fi
-
-fi
-
-fi
-
-
-	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
-$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-  	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
-$as_echo_n "checking for ngettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl -liconv $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ngettext ();
-int
-main ()
-{
-return ngettext ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_ngettext=yes
-else
-  ac_cv_lib_intl_ngettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
-$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
-$as_echo_n "checking for dcgettext in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_dcgettext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl -liconv $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dcgettext ();
-int
-main ()
-{
-return dcgettext ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_dcgettext=yes
-else
-  ac_cv_lib_intl_dcgettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
-$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
-if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then :
-  gt_cv_func_dgettext_libintl=yes
-			libintl_extra_libs=-liconv
-else
-  :
-fi
-
-else
-  :
-fi
-
-        fi
-
-        #
-        # If we found libintl, then check in it for bind_textdomain_codeset();
-        # we'll prefer libc if neither have bind_textdomain_codeset(),
-        # and both have dgettext and ngettext
-        #
-        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
-          glib_save_LIBS="$LIBS"
-          LIBS="$LIBS -lintl $libintl_extra_libs"
-          unset ac_cv_func_bind_textdomain_codeset
-          for ac_func in bind_textdomain_codeset
-do :
-  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_BIND_TEXTDOMAIN_CODESET 1
-_ACEOF
-
-fi
-done
-
-          LIBS="$glib_save_LIBS"
-
-          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
-            gt_cv_func_dgettext_libc=no
-          else
-            if test "$gt_cv_func_dgettext_libc" = "yes" \
-		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
-              gt_cv_func_dgettext_libintl=no
-            fi
-          fi
-        fi
-      fi
-
-      if test "$gt_cv_func_dgettext_libc" = "yes" \
-	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
-        gt_cv_have_gettext=yes
-      fi
-
-      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
-        INTLLIBS="-lintl $libintl_extra_libs"
-      fi
-
-      if test "$gt_cv_have_gettext" = "yes"; then
-
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
-
-	# Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGFMT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case "$MSGFMT" in
-  /*)
-  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
-	ac_cv_path_MSGFMT="$ac_dir/$ac_word"
-	break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
-  ;;
-esac
-fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != "no"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-	if test "$MSGFMT" != "no"; then
-          glib_save_LIBS="$LIBS"
-          LIBS="$LIBS $INTLLIBS"
-	  for ac_func in dcgettext
-do :
-  ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
-if test "x$ac_cv_func_dcgettext" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DCGETTEXT 1
-_ACEOF
-
-fi
-done
-
-	  MSGFMT_OPTS=
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
-$as_echo_n "checking if msgfmt accepts -c... " >&6; }
-	  cat >conftest.foo <<_ACEOF
-
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: test 1.0\n"
-"PO-Revision-Date: 2007-02-15 12:01+0100\n"
-"Last-Translator: test <foo at bar.xx>\n"
-"Language-Team: C <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-_ACEOF
-if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
-  ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-echo "$as_me: failed input was:" >&5
-sed 's/^/| /' conftest.foo >&5
-fi
-
-	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GMSGFMT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GMSGFMT in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
-  ;;
-esac
-fi
-GMSGFMT=$ac_cv_path_GMSGFMT
-if test -n "$GMSGFMT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-	  # Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_XGETTEXT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case "$XGETTEXT" in
-  /*)
-  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
-	ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
-	break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
-  ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-extern int _nl_msg_cat_cntr;
-			 return _nl_msg_cat_cntr
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  CATOBJEXT=.gmo
-             DATADIRNAME=share
-else
-  case $host in
-	    *-*-solaris*)
-	    	                	    	                ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
-  CATOBJEXT=.gmo
-               DATADIRNAME=share
-else
-  CATOBJEXT=.mo
-               DATADIRNAME=lib
-fi
-
-	    ;;
-	    *)
-	    CATOBJEXT=.mo
-            DATADIRNAME=lib
-	    ;;
-	    esac
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-          LIBS="$glib_save_LIBS"
-	  INSTOBJEXT=.mo
-	else
-	  gt_cv_have_gettext=no
-	fi
-      fi
-
-fi
-
-
-
-    if test "$gt_cv_have_gettext" = "yes" ; then
-
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
-
-    fi
-
-        if test "$XGETTEXT" != ":"; then
-                  if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
-        : ;
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
-$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
-        XGETTEXT=":"
-      fi
-    fi
-
-    # We need to process the po/ directory.
-    POSUB=po
-
-    ac_config_commands="$ac_config_commands default-1"
-
-
-                for lang in $ALL_LINGUAS; do
-      GMOFILES="$GMOFILES $lang.gmo"
-      POFILES="$POFILES $lang.po"
-    done
-
-
-
-
-
-
-
-
-
-
-
-
-
-   if test "$gt_cv_have_gettext" = "yes"; then
-     if test "x$ALL_LINGUAS" = "x"; then
-       LINGUAS=
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
-$as_echo_n "checking for catalogs to be installed... " >&6; }
-       NEW_LINGUAS=
-       for presentlang in $ALL_LINGUAS; do
-         useit=no
-         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
-           desiredlanguages="$LINGUAS"
-         else
-           desiredlanguages="$ALL_LINGUAS"
-         fi
-         for desiredlang in $desiredlanguages; do
- 	   # Use the presentlang catalog if desiredlang is
-           #   a. equal to presentlang, or
-           #   b. a variant of presentlang (because in this case,
-           #      presentlang can be used as a fallback for messages
-           #      which are not translated in the desiredlang catalog).
-           case "$desiredlang" in
-             "$presentlang"*) useit=yes;;
-           esac
-         done
-         if test $useit = yes; then
-           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
-         fi
-       done
-       LINGUAS=$NEW_LINGUAS
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
-$as_echo "$LINGUAS" >&6; }
-     fi
-
-          if test -n "$LINGUAS"; then
-       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
-     fi
-   fi
-
-            MKINSTALLDIRS=
-   if test -n "$ac_aux_dir"; then
-     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
-   fi
-   if test -z "$MKINSTALLDIRS"; then
-     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-   fi
-
-
-         test -d po || mkdir po
-   if test "x$srcdir" != "x."; then
-     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
-       posrcprefix="$srcdir/"
-     else
-       posrcprefix="../$srcdir/"
-     fi
-   else
-     posrcprefix="../"
-   fi
-   rm -f po/POTFILES
-   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
-	< $srcdir/po/POTFILES.in > po/POTFILES
-
-	CONFIG_STATUS_DEPENDENCIES='$(top_srcdir)/po/LINGUAS'
-
-
-
-# Check whether --enable-release was given.
-if test "${enable_release+set}" = set; then :
-  enableval=$enable_release; enable_release=yes
-else
-  enable_release=`(test ! -d .svn && test ! -d .git) && echo "yes" || echo "no"`
-fi
-
- if test "x$enable_release" = "xyes"; then
-  ENABLE_RELEASE_TRUE=
-  ENABLE_RELEASE_FALSE='#'
-else
-  ENABLE_RELEASE_TRUE='#'
-  ENABLE_RELEASE_FALSE=
-fi
-
-ENABLE_RELEASE=$enable_release
-
-if test "x$enable_release" = "xyes"; then
-	GMCS_FLAGS="-define:RELEASE"
-else
-	GMCS_FLAGS="-warnaserror"
-fi
-
-
-
-	NUNIT_REQUIRED=2.4.7
-
-	# Check whether --enable-tests was given.
-if test "${enable_tests+set}" = set; then :
-  enableval=$enable_tests; enable_tests=$enableval
-else
-  enable_tests="no"
-fi
-
-
-	if test "x$enable_tests" = "xno"; then
-		do_tests=no
-		 if false; then
-  ENABLE_TESTS_TRUE=
-  ENABLE_TESTS_FALSE='#'
-else
-  ENABLE_TESTS_TRUE='#'
-  ENABLE_TESTS_FALSE=
-fi
-
-	else
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5
-$as_echo_n "checking for NUNIT... " >&6; }
-
-if test -n "$NUNIT_CFLAGS"; then
-    pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit >= \$NUNIT_REQUIRED\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "nunit >= $NUNIT_REQUIRED") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NUNIT_CFLAGS=`$PKG_CONFIG --cflags "nunit >= $NUNIT_REQUIRED" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$NUNIT_LIBS"; then
-    pkg_cv_NUNIT_LIBS="$NUNIT_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit >= \$NUNIT_REQUIRED\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "nunit >= $NUNIT_REQUIRED") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NUNIT_LIBS=`$PKG_CONFIG --libs "nunit >= $NUNIT_REQUIRED" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "nunit >= $NUNIT_REQUIRED" 2>&1`
-        else
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "nunit >= $NUNIT_REQUIRED" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$NUNIT_PKG_ERRORS" >&5
-
-	do_tests="no"
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	do_tests="no"
-else
-	NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS
-	NUNIT_LIBS=$pkg_cv_NUNIT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	do_tests="yes"
-fi
-
-
-		 if test "x$do_tests" = "xyes"; then
-  ENABLE_TESTS_TRUE=
-  ENABLE_TESTS_FALSE='#'
-else
-  ENABLE_TESTS_TRUE='#'
-  ENABLE_TESTS_FALSE=
-fi
-
-
-		if test "x$do_tests" = "xno"; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5
-$as_echo_n "checking for NUNIT... " >&6; }
-
-if test -n "$NUNIT_CFLAGS"; then
-    pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit >= 2.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "mono-nunit >= 2.4") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NUNIT_CFLAGS=`$PKG_CONFIG --cflags "mono-nunit >= 2.4" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$NUNIT_LIBS"; then
-    pkg_cv_NUNIT_LIBS="$NUNIT_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit >= 2.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "mono-nunit >= 2.4") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NUNIT_LIBS=`$PKG_CONFIG --libs "mono-nunit >= 2.4" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-nunit >= 2.4" 2>&1`
-        else
-	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-nunit >= 2.4" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$NUNIT_PKG_ERRORS" >&5
-
-	do_tests="no"
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	do_tests="no"
-else
-	NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS
-	NUNIT_LIBS=$pkg_cv_NUNIT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	do_tests="yes"
-fi
-
-
-			 if test "x$do_tests" = "xyes"; then
-  ENABLE_TESTS_TRUE=
-  ENABLE_TESTS_FALSE='#'
-else
-  ENABLE_TESTS_TRUE='#'
-  ENABLE_TESTS_FALSE=
-fi
-
-
-			if test "x$do_tests" = "xno"; then
-				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find nunit: tests will not be available" >&5
-$as_echo "$as_me: WARNING: Could not find nunit: tests will not be available" >&2;}			fi
-		fi
-	fi
-
-
-
-
-	# Check whether --enable-alarmclock was given.
-if test "${enable_alarmclock+set}" = set; then :
-  enableval=$enable_alarmclock; enable_AlarmClock=$enableval
-else
-  enable_AlarmClock=yes
-
-fi
-
-
-
-	if test "x$enable_AlarmClock" = "xyes"; then
-		 if true; then
-  ENABLE_ALARMCLOCK_TRUE=
-  ENABLE_ALARMCLOCK_FALSE='#'
-else
-  ENABLE_ALARMCLOCK_TRUE='#'
-  ENABLE_ALARMCLOCK_FALSE=
-fi
-
-	else
-		 if false; then
-  ENABLE_ALARMCLOCK_TRUE=
-  ENABLE_ALARMCLOCK_FALSE='#'
-else
-  ENABLE_ALARMCLOCK_TRUE='#'
-  ENABLE_ALARMCLOCK_FALSE=
-fi
-
-	fi
-
-
-
-	# Check whether --enable-ampache was given.
-if test "${enable_ampache+set}" = set; then :
-  enableval=$enable_ampache; enable_Ampache=$enableval
-else
-  enable_Ampache=yes
-
-fi
-
-
-
-	if test "x$enable_Ampache" = "xyes"; then
-		 if true; then
-  ENABLE_AMPACHE_TRUE=
-  ENABLE_AMPACHE_FALSE='#'
-else
-  ENABLE_AMPACHE_TRUE='#'
-  ENABLE_AMPACHE_FALSE=
-fi
-
-	else
-		 if false; then
-  ENABLE_AMPACHE_TRUE=
-  ENABLE_AMPACHE_FALSE='#'
-else
-  ENABLE_AMPACHE_TRUE='#'
-  ENABLE_AMPACHE_FALSE=
-fi
-
-	fi
-
-
-
-	# Check whether --enable-appindicator was given.
-if test "${enable_appindicator+set}" = set; then :
-  enableval=$enable_appindicator; enable_AppIndicator=$enableval
-else
-  enable_AppIndicator=try
-
-fi
-
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for APPINDICATORSHARP" >&5
-$as_echo_n "checking for APPINDICATORSHARP... " >&6; }
-
-if test -n "$APPINDICATORSHARP_CFLAGS"; then
-    pkg_cv_APPINDICATORSHARP_CFLAGS="$APPINDICATORSHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"appindicator-sharp-0.1\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "appindicator-sharp-0.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_APPINDICATORSHARP_CFLAGS=`$PKG_CONFIG --cflags "appindicator-sharp-0.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$APPINDICATORSHARP_LIBS"; then
-    pkg_cv_APPINDICATORSHARP_LIBS="$APPINDICATORSHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"appindicator-sharp-0.1\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "appindicator-sharp-0.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_APPINDICATORSHARP_LIBS=`$PKG_CONFIG --libs "appindicator-sharp-0.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        APPINDICATORSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "appindicator-sharp-0.1" 2>&1`
-        else
-	        APPINDICATORSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "appindicator-sharp-0.1" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$APPINDICATORSHARP_PKG_ERRORS" >&5
-
-	have_APPINDICATORSHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_APPINDICATORSHARP=no
-else
-	APPINDICATORSHARP_CFLAGS=$pkg_cv_APPINDICATORSHARP_CFLAGS
-	APPINDICATORSHARP_LIBS=$pkg_cv_APPINDICATORSHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_APPINDICATORSHARP=yes
-fi
-
-
-
-	if test "x$enable_AppIndicator" = "xyes" -a "x$have_APPINDICATORSHARP" = "xno"; then
-		as_fn_error $? "AppIndicator-sharp was not found. Please install it or disable the AppIndicator extension by passing --disable-appindicator" "$LINENO" 5
-	fi
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NOTIFYSHARP" >&5
-$as_echo_n "checking for NOTIFYSHARP... " >&6; }
-
-if test -n "$NOTIFYSHARP_CFLAGS"; then
-    pkg_cv_NOTIFYSHARP_CFLAGS="$NOTIFYSHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NOTIFYSHARP_CFLAGS=`$PKG_CONFIG --cflags "notify-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$NOTIFYSHARP_LIBS"; then
-    pkg_cv_NOTIFYSHARP_LIBS="$NOTIFYSHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NOTIFYSHARP_LIBS=`$PKG_CONFIG --libs "notify-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "notify-sharp" 2>&1`
-        else
-	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "notify-sharp" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$NOTIFYSHARP_PKG_ERRORS" >&5
-
-	have_NOTIFYSHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_NOTIFYSHARP=no
-else
-	NOTIFYSHARP_CFLAGS=$pkg_cv_NOTIFYSHARP_CFLAGS
-	NOTIFYSHARP_LIBS=$pkg_cv_NOTIFYSHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_NOTIFYSHARP=yes
-fi
-
-
-
-	if test "x$enable_AppIndicator" = "xyes" -a "x$have_NOTIFYSHARP" = "xno"; then
-		as_fn_error $? "Notify-sharp was not found. Please install it or disable the AppIndicator extension by passing --disable-appindicator" "$LINENO" 5
-	fi
-
-
-	if test "x$enable_AppIndicator" = "xtry" \
-		&& test "x$have_APPINDICATORSHARP" = "xyes" \
-		&& test "x$have_NOTIFYSHARP" = "xyes"; then
-		enable_AppIndicator=yes
-	fi
-
-	if test "x$enable_AppIndicator" = "xyes"; then
-		 if true; then
-  ENABLE_APPINDICATOR_TRUE=
-  ENABLE_APPINDICATOR_FALSE='#'
-else
-  ENABLE_APPINDICATOR_TRUE='#'
-  ENABLE_APPINDICATOR_FALSE=
-fi
-
-	else
-		enable_AppIndicator=no
-		 if false; then
-  ENABLE_APPINDICATOR_TRUE=
-  ENABLE_APPINDICATOR_FALSE='#'
-else
-  ENABLE_APPINDICATOR_TRUE='#'
-  ENABLE_APPINDICATOR_FALSE=
-fi
-
-	fi
-
-
-
-	# Check whether --enable-awn was given.
-if test "${enable_awn+set}" = set; then :
-  enableval=$enable_awn; enable_Awn=$enableval
-else
-  enable_Awn=yes
-
-fi
-
-
-
-	if test "x$enable_Awn" = "xyes"; then
-		 if true; then
-  ENABLE_AWN_TRUE=
-  ENABLE_AWN_FALSE='#'
-else
-  ENABLE_AWN_TRUE='#'
-  ENABLE_AWN_FALSE=
-fi
-
-	else
-		 if false; then
-  ENABLE_AWN_TRUE=
-  ENABLE_AWN_FALSE='#'
-else
-  ENABLE_AWN_TRUE='#'
-  ENABLE_AWN_FALSE=
-fi
-
-	fi
-
-
-
-	# Check whether --enable-clutterflow was given.
-if test "${enable_clutterflow+set}" = set; then :
-  enableval=$enable_clutterflow; enable_ClutterFlow=$enableval
-else
-  enable_ClutterFlow=try
-
-fi
-
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLUTTER_SHARP" >&5
-$as_echo_n "checking for CLUTTER_SHARP... " >&6; }
-
-if test -n "$CLUTTER_SHARP_CFLAGS"; then
-    pkg_cv_CLUTTER_SHARP_CFLAGS="$CLUTTER_SHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"clutter-sharp clutter-gtk-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "clutter-sharp clutter-gtk-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CLUTTER_SHARP_CFLAGS=`$PKG_CONFIG --cflags "clutter-sharp clutter-gtk-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$CLUTTER_SHARP_LIBS"; then
-    pkg_cv_CLUTTER_SHARP_LIBS="$CLUTTER_SHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"clutter-sharp clutter-gtk-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "clutter-sharp clutter-gtk-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CLUTTER_SHARP_LIBS=`$PKG_CONFIG --libs "clutter-sharp clutter-gtk-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        CLUTTER_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "clutter-sharp clutter-gtk-sharp" 2>&1`
-        else
-	        CLUTTER_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "clutter-sharp clutter-gtk-sharp" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$CLUTTER_SHARP_PKG_ERRORS" >&5
-
-	have_CLUTTER_SHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_CLUTTER_SHARP=no
-else
-	CLUTTER_SHARP_CFLAGS=$pkg_cv_CLUTTER_SHARP_CFLAGS
-	CLUTTER_SHARP_LIBS=$pkg_cv_CLUTTER_SHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_CLUTTER_SHARP=yes
-fi
-
-
-
-	if test "x$enable_ClutterFlow" = "xyes" -a "x$have_CLUTTER_SHARP" = "xno"; then
-		as_fn_error $? "clutter-sharp was not found. Please install clutter-sharp or disable the ClutterFlow extension by passing --disable-clutterflow" "$LINENO" 5
-	fi
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BANSHEE_NOWPLAYING" >&5
-$as_echo_n "checking for BANSHEE_NOWPLAYING... " >&6; }
-
-if test -n "$BANSHEE_NOWPLAYING_CFLAGS"; then
-    pkg_cv_BANSHEE_NOWPLAYING_CFLAGS="$BANSHEE_NOWPLAYING_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-nowplaying\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "banshee-1-nowplaying") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_BANSHEE_NOWPLAYING_CFLAGS=`$PKG_CONFIG --cflags "banshee-1-nowplaying" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$BANSHEE_NOWPLAYING_LIBS"; then
-    pkg_cv_BANSHEE_NOWPLAYING_LIBS="$BANSHEE_NOWPLAYING_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-nowplaying\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "banshee-1-nowplaying") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_BANSHEE_NOWPLAYING_LIBS=`$PKG_CONFIG --libs "banshee-1-nowplaying" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        BANSHEE_NOWPLAYING_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "banshee-1-nowplaying" 2>&1`
-        else
-	        BANSHEE_NOWPLAYING_PKG_ERRORS=`$PKG_CONFIG --print-errors "banshee-1-nowplaying" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$BANSHEE_NOWPLAYING_PKG_ERRORS" >&5
-
-	have_BANSHEE_NOWPLAYING=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_BANSHEE_NOWPLAYING=no
-else
-	BANSHEE_NOWPLAYING_CFLAGS=$pkg_cv_BANSHEE_NOWPLAYING_CFLAGS
-	BANSHEE_NOWPLAYING_LIBS=$pkg_cv_BANSHEE_NOWPLAYING_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_BANSHEE_NOWPLAYING=yes
-fi
-
-
-
-	if test "x$enable_ClutterFlow" = "xyes" -a "x$have_BANSHEE_NOWPLAYING" = "xno"; then
-		as_fn_error $? "The Banshee NowPlaying extension was not found. Please install it or disable the ClutterFlow extension by passing --disable-clutterflow" "$LINENO" 5
-	fi
-
-
-	if test "x$enable_ClutterFlow" = "xtry" \
-		&& test "x$have_CLUTTER_SHARP" = "xyes" \
-		&& test "x$have_BANSHEE_NOWPLAYING" = "xyes"; then
-		enable_ClutterFlow=yes
-	fi
-
-	if test "x$enable_ClutterFlow" = "xyes"; then
-		CLUTTER_BUNDLEFILES="`$PKG_CONFIG --variable=bundlefiles clutter-sharp` `$PKG_CONFIG --variable=bundlefiles clutter-gtk-sharp`"
-
-		 if true; then
-  ENABLE_CLUTTERFLOW_TRUE=
-  ENABLE_CLUTTERFLOW_FALSE='#'
-else
-  ENABLE_CLUTTERFLOW_TRUE='#'
-  ENABLE_CLUTTERFLOW_FALSE=
-fi
-
-	else
-		enable_ClutterFlow=no
-		 if false; then
-  ENABLE_CLUTTERFLOW_TRUE=
-  ENABLE_CLUTTERFLOW_FALSE='#'
-else
-  ENABLE_CLUTTERFLOW_TRUE='#'
-  ENABLE_CLUTTERFLOW_FALSE=
-fi
-
-	fi
-
-
-
-	# Check whether --enable-coverwallpaper was given.
-if test "${enable_coverwallpaper+set}" = set; then :
-  enableval=$enable_coverwallpaper; enable_CoverWallpaper=$enableval
-else
-  enable_CoverWallpaper=yes
-
-fi
-
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONFSHARP" >&5
-$as_echo_n "checking for GCONFSHARP... " >&6; }
-
-if test -n "$GCONFSHARP_CFLAGS"; then
-    pkg_cv_GCONFSHARP_CFLAGS="$GCONFSHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GCONFSHARP_CFLAGS=`$PKG_CONFIG --cflags "gconf-sharp-2.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$GCONFSHARP_LIBS"; then
-    pkg_cv_GCONFSHARP_LIBS="$GCONFSHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GCONFSHARP_LIBS=`$PKG_CONFIG --libs "gconf-sharp-2.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        GCONFSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gconf-sharp-2.0" 2>&1`
-        else
-	        GCONFSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gconf-sharp-2.0" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GCONFSHARP_PKG_ERRORS" >&5
-
-	have_GCONFSHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_GCONFSHARP=no
-else
-	GCONFSHARP_CFLAGS=$pkg_cv_GCONFSHARP_CFLAGS
-	GCONFSHARP_LIBS=$pkg_cv_GCONFSHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_GCONFSHARP=yes
-fi
-
-
-
-	if test "x$enable_CoverWallpaper" = "xyes" -a "x$have_GCONFSHARP" = "xno"; then
-		as_fn_error $? "GConf-sharp was not found. Please install it or disable the CoverWallpaper extension by passing --disable-coverwallpaper" "$LINENO" 5
-	fi
-
-
-	if test "x$enable_CoverWallpaper" = "xtry" \
-		&& test "x$have_GCONFSHARP" = "xyes"; then
-		enable_CoverWallpaper=yes
-	fi
-
-	if test "x$enable_CoverWallpaper" = "xyes"; then
-		 if true; then
-  ENABLE_COVERWALLPAPER_TRUE=
-  ENABLE_COVERWALLPAPER_FALSE='#'
-else
-  ENABLE_COVERWALLPAPER_TRUE='#'
-  ENABLE_COVERWALLPAPER_FALSE=
-fi
-
-	else
-		 if false; then
-  ENABLE_COVERWALLPAPER_TRUE=
-  ENABLE_COVERWALLPAPER_FALSE='#'
-else
-  ENABLE_COVERWALLPAPER_TRUE='#'
-  ENABLE_COVERWALLPAPER_FALSE=
-fi
-
-	fi
-
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -15248,7 +13472,6 @@ fi
 
 
 
-
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -15775,401 +13998,6 @@ fi
 
 
 
-
-	# Check whether --enable-lastfmfingerprint was given.
-if test "${enable_lastfmfingerprint+set}" = set; then :
-  enableval=$enable_lastfmfingerprint; enable_LastfmFingerprint=$enableval
-else
-  enable_LastfmFingerprint=try
-
-fi
-
-
-
-	ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CXX"  am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17918,11 +15746,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17921: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15749: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17925: \$? = $ac_status" >&5
+   echo "$as_me:15753: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -18017,11 +15845,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18020: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15848: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:18024: \$? = $ac_status" >&5
+   echo "$as_me:15852: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -18069,11 +15897,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18072: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15900: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:18076: \$? = $ac_status" >&5
+   echo "$as_me:15904: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -19017,6 +16845,1996 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+# Check whether --enable-gnome was given.
+if test "${enable_gnome+set}" = set; then :
+  enableval=$enable_gnome;
+else
+  enable_gnome="yes"
+fi
+
+if test "x$enable_gnome" = "xyes"; then
+	# Extract the first word of "gconftool-2", so it can be a program name with args.
+set dummy gconftool-2; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GCONFTOOL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GCONFTOOL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GCONFTOOL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no"
+  ;;
+esac
+fi
+GCONFTOOL=$ac_cv_path_GCONFTOOL
+if test -n "$GCONFTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5
+$as_echo "$GCONFTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+  else
+    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+  fi
+
+
+# Check whether --with-gconf-source was given.
+if test "${with_gconf_source+set}" = set; then :
+  withval=$with_gconf_source; GCONF_SCHEMA_CONFIG_SOURCE="$withval"
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5
+$as_echo "Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6; }
+
+  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+  fi
+
+
+# Check whether --with-gconf-schema-file-dir was given.
+if test "${with_gconf_schema_file_dir+set}" = set; then :
+  withval=$with_gconf_schema_file_dir; GCONF_SCHEMA_FILE_DIR="$withval"
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5
+$as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6; }
+
+  # Check whether --enable-schemas-install was given.
+if test "${enable_schemas_install+set}" = set; then :
+  enableval=$enable_schemas_install; case ${enableval} in
+       yes|no) ;;
+       *) as_fn_error $? "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5  ;;
+      esac
+fi
+
+   if test "$enable_schemas_install" != no; then
+  GCONF_SCHEMAS_INSTALL_TRUE=
+  GCONF_SCHEMAS_INSTALL_FALSE='#'
+else
+  GCONF_SCHEMAS_INSTALL_TRUE='#'
+  GCONF_SCHEMAS_INSTALL_FALSE=
+fi
+
+
+	 if true; then
+  ENABLE_GNOME_TRUE=
+  ENABLE_GNOME_FALSE='#'
+else
+  ENABLE_GNOME_TRUE='#'
+  ENABLE_GNOME_FALSE=
+fi
+
+else
+	 if false; then
+  GCONF_SCHEMAS_INSTALL_TRUE=
+  GCONF_SCHEMAS_INSTALL_FALSE='#'
+else
+  GCONF_SCHEMAS_INSTALL_TRUE='#'
+  GCONF_SCHEMAS_INSTALL_FALSE=
+fi
+
+	 if false; then
+  ENABLE_GNOME_TRUE=
+  ENABLE_GNOME_FALSE='#'
+else
+  ENABLE_GNOME_TRUE='#'
+  ENABLE_GNOME_FALSE=
+fi
+
+fi
+
+
+	ALL_LINGUAS=`grep -v '^#' $srcdir/po/LINGUAS | $SED ':a;N;$!ba;s/\n/ /g; s/[ ]+/ /g' | xargs`
+	GETTEXT_PACKAGE=$PACKAGE
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+   for ac_header in locale.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LOCALE_H 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_locale_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_val_LC_MESSAGES=yes
+else
+  am_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
+$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
+    if test $am_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+    fi
+  fi
+     USE_NLS=yes
+
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = x""yes; then :
+  gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
+$as_echo_n "checking for ngettext in libc... " >&6; }
+if test "${gt_cv_func_ngettext_libc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_ngettext_libc=yes
+else
+  gt_cv_func_ngettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
+$as_echo "$gt_cv_func_ngettext_libc" >&6; }
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
+$as_echo_n "checking for dgettext in libc... " >&6; }
+if test "${gt_cv_func_dgettext_libc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_dgettext_libc=yes
+else
+  gt_cv_func_dgettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
+$as_echo "$gt_cv_func_dgettext_libc" >&6; }
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
+$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char bindtextdomain ();
+int
+main ()
+{
+return bindtextdomain ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_bindtextdomain=yes
+else
+  ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
+$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
+if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_ngettext=yes
+else
+  ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
+$as_echo_n "checking for dgettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dgettext ();
+int
+main ()
+{
+return dgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_dgettext=yes
+else
+  ac_cv_lib_intl_dgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
+$as_echo "$ac_cv_lib_intl_dgettext" >&6; }
+if test "x$ac_cv_lib_intl_dgettext" = x""yes; then :
+  gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
+$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+  	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_ngettext=yes
+else
+  ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
+$as_echo_n "checking for dcgettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dcgettext ();
+int
+main ()
+{
+return dcgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_dcgettext=yes
+else
+  ac_cv_lib_intl_dcgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
+$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
+if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then :
+  gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv
+else
+  :
+fi
+
+else
+  :
+fi
+
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+
+      if test "$gt_cv_have_gettext" = "yes"; then
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+	# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGFMT" in
+  /*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+	ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+  ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+	  for ac_func in dcgettext
+do :
+  ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
+if test "x$ac_cv_func_dcgettext" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+fi
+done
+
+	  MSGFMT_OPTS=
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
+$as_echo_n "checking if msgfmt accepts -c... " >&6; }
+	  cat >conftest.foo <<_ACEOF
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo at bar.xx>\n"
+"Language-Team: C <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+_ACEOF
+if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
+  ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+echo "$as_me: failed input was:" >&5
+sed 's/^/| /' conftest.foo >&5
+fi
+
+	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+	  # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$XGETTEXT" in
+  /*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+	ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+  ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  CATOBJEXT=.gmo
+             DATADIRNAME=share
+else
+  case $host in
+	    *-*-solaris*)
+	    	                	    	                ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+  CATOBJEXT=.gmo
+               DATADIRNAME=share
+else
+  CATOBJEXT=.mo
+               DATADIRNAME=lib
+fi
+
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+
+fi
+
+
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    fi
+
+        if test "$XGETTEXT" != ":"; then
+                  if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+    ac_config_commands="$ac_config_commands default-1"
+
+
+                for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+
+
+
+
+
+
+
+
+
+
+
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+     fi
+
+          if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+            MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+
+
+         test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+
+	CONFIG_STATUS_DEPENDENCIES='$(top_srcdir)/po/LINGUAS'
+
+
+
+# Check whether --enable-release was given.
+if test "${enable_release+set}" = set; then :
+  enableval=$enable_release; enable_release=yes
+else
+  enable_release=`(test ! -d .svn && test ! -d .git) && echo "yes" || echo "no"`
+fi
+
+ if test "x$enable_release" = "xyes"; then
+  ENABLE_RELEASE_TRUE=
+  ENABLE_RELEASE_FALSE='#'
+else
+  ENABLE_RELEASE_TRUE='#'
+  ENABLE_RELEASE_FALSE=
+fi
+
+ENABLE_RELEASE=$enable_release
+
+if test "x$enable_release" = "xyes"; then
+	GMCS_FLAGS="-define:RELEASE"
+else
+	GMCS_FLAGS="-warnaserror"
+fi
+
+
+
+	NUNIT_REQUIRED=2.4.7
+
+	# Check whether --enable-tests was given.
+if test "${enable_tests+set}" = set; then :
+  enableval=$enable_tests; enable_tests=$enableval
+else
+  enable_tests="no"
+fi
+
+
+	if test "x$enable_tests" = "xno"; then
+		do_tests=no
+		 if false; then
+  ENABLE_TESTS_TRUE=
+  ENABLE_TESTS_FALSE='#'
+else
+  ENABLE_TESTS_TRUE='#'
+  ENABLE_TESTS_FALSE=
+fi
+
+	else
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5
+$as_echo_n "checking for NUNIT... " >&6; }
+
+if test -n "$NUNIT_CFLAGS"; then
+    pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit >= \$NUNIT_REQUIRED\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "nunit >= $NUNIT_REQUIRED") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NUNIT_CFLAGS=`$PKG_CONFIG --cflags "nunit >= $NUNIT_REQUIRED" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$NUNIT_LIBS"; then
+    pkg_cv_NUNIT_LIBS="$NUNIT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit >= \$NUNIT_REQUIRED\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "nunit >= $NUNIT_REQUIRED") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NUNIT_LIBS=`$PKG_CONFIG --libs "nunit >= $NUNIT_REQUIRED" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "nunit >= $NUNIT_REQUIRED" 2>&1`
+        else
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "nunit >= $NUNIT_REQUIRED" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$NUNIT_PKG_ERRORS" >&5
+
+	do_tests="no"
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	do_tests="no"
+else
+	NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS
+	NUNIT_LIBS=$pkg_cv_NUNIT_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	do_tests="yes"
+fi
+
+		# Extract the first word of "nunit-console2", so it can be a program name with args.
+set dummy nunit-console2; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_NUNIT_CONSOLE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $NUNIT_CONSOLE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_NUNIT_CONSOLE="$NUNIT_CONSOLE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_NUNIT_CONSOLE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_NUNIT_CONSOLE" && ac_cv_path_NUNIT_CONSOLE="none"
+  ;;
+esac
+fi
+NUNIT_CONSOLE=$ac_cv_path_NUNIT_CONSOLE
+if test -n "$NUNIT_CONSOLE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NUNIT_CONSOLE" >&5
+$as_echo "$NUNIT_CONSOLE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        if test "x$NUNIT_CONSOLE" = "xnone"; then
+			# Extract the first word of "nunit-console", so it can be a program name with args.
+set dummy nunit-console; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_NUNIT_CONSOLE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $NUNIT_CONSOLE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_NUNIT_CONSOLE="$NUNIT_CONSOLE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_NUNIT_CONSOLE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_NUNIT_CONSOLE" && ac_cv_path_NUNIT_CONSOLE="none"
+  ;;
+esac
+fi
+NUNIT_CONSOLE=$ac_cv_path_NUNIT_CONSOLE
+if test -n "$NUNIT_CONSOLE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NUNIT_CONSOLE" >&5
+$as_echo "$NUNIT_CONSOLE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+		fi
+
+		if test "x$NUNIT_CONSOLE" = "xnone"; then
+			do_tests="no"
+		fi
+
+
+
+		 if test "x$do_tests" = "xyes"; then
+  ENABLE_TESTS_TRUE=
+  ENABLE_TESTS_FALSE='#'
+else
+  ENABLE_TESTS_TRUE='#'
+  ENABLE_TESTS_FALSE=
+fi
+
+
+		if test "x$do_tests" = "xno" && test "x$NUNIT_CONSOLE" != "xnone"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5
+$as_echo_n "checking for NUNIT... " >&6; }
+
+if test -n "$NUNIT_CFLAGS"; then
+    pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit >= 2.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "mono-nunit >= 2.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NUNIT_CFLAGS=`$PKG_CONFIG --cflags "mono-nunit >= 2.4" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$NUNIT_LIBS"; then
+    pkg_cv_NUNIT_LIBS="$NUNIT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-nunit >= 2.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "mono-nunit >= 2.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NUNIT_LIBS=`$PKG_CONFIG --libs "mono-nunit >= 2.4" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-nunit >= 2.4" 2>&1`
+        else
+	        NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-nunit >= 2.4" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$NUNIT_PKG_ERRORS" >&5
+
+	do_tests="no"
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	do_tests="no"
+else
+	NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS
+	NUNIT_LIBS=$pkg_cv_NUNIT_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	do_tests="yes"
+fi
+
+
+			 if test "x$do_tests" = "xyes"; then
+  ENABLE_TESTS_TRUE=
+  ENABLE_TESTS_FALSE='#'
+else
+  ENABLE_TESTS_TRUE='#'
+  ENABLE_TESTS_FALSE=
+fi
+
+
+			if test "x$do_tests" = "xno"; then
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find nunit: tests will not be available" >&5
+$as_echo "$as_me: WARNING: Could not find nunit: tests will not be available" >&2;}			fi
+		fi
+	fi
+
+
+
+
+	# Check whether --enable-alarmclock was given.
+if test "${enable_alarmclock+set}" = set; then :
+  enableval=$enable_alarmclock; enable_AlarmClock=$enableval
+else
+  enable_AlarmClock=yes
+
+fi
+
+
+
+	if test "x$enable_AlarmClock" = "xyes"; then
+		 if true; then
+  ENABLE_ALARMCLOCK_TRUE=
+  ENABLE_ALARMCLOCK_FALSE='#'
+else
+  ENABLE_ALARMCLOCK_TRUE='#'
+  ENABLE_ALARMCLOCK_FALSE=
+fi
+
+	else
+		 if false; then
+  ENABLE_ALARMCLOCK_TRUE=
+  ENABLE_ALARMCLOCK_FALSE='#'
+else
+  ENABLE_ALARMCLOCK_TRUE='#'
+  ENABLE_ALARMCLOCK_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-ampache was given.
+if test "${enable_ampache+set}" = set; then :
+  enableval=$enable_ampache; enable_Ampache=$enableval
+else
+  enable_Ampache=yes
+
+fi
+
+
+
+	if test "x$enable_Ampache" = "xyes"; then
+		 if true; then
+  ENABLE_AMPACHE_TRUE=
+  ENABLE_AMPACHE_FALSE='#'
+else
+  ENABLE_AMPACHE_TRUE='#'
+  ENABLE_AMPACHE_FALSE=
+fi
+
+	else
+		 if false; then
+  ENABLE_AMPACHE_TRUE=
+  ENABLE_AMPACHE_FALSE='#'
+else
+  ENABLE_AMPACHE_TRUE='#'
+  ENABLE_AMPACHE_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-appindicator was given.
+if test "${enable_appindicator+set}" = set; then :
+  enableval=$enable_appindicator; enable_AppIndicator=$enableval
+else
+  enable_AppIndicator=try
+
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for APPINDICATORSHARP" >&5
+$as_echo_n "checking for APPINDICATORSHARP... " >&6; }
+
+if test -n "$APPINDICATORSHARP_CFLAGS"; then
+    pkg_cv_APPINDICATORSHARP_CFLAGS="$APPINDICATORSHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"appindicator-sharp-0.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "appindicator-sharp-0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_APPINDICATORSHARP_CFLAGS=`$PKG_CONFIG --cflags "appindicator-sharp-0.1" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$APPINDICATORSHARP_LIBS"; then
+    pkg_cv_APPINDICATORSHARP_LIBS="$APPINDICATORSHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"appindicator-sharp-0.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "appindicator-sharp-0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_APPINDICATORSHARP_LIBS=`$PKG_CONFIG --libs "appindicator-sharp-0.1" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        APPINDICATORSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "appindicator-sharp-0.1" 2>&1`
+        else
+	        APPINDICATORSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "appindicator-sharp-0.1" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$APPINDICATORSHARP_PKG_ERRORS" >&5
+
+	have_APPINDICATORSHARP=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_APPINDICATORSHARP=no
+else
+	APPINDICATORSHARP_CFLAGS=$pkg_cv_APPINDICATORSHARP_CFLAGS
+	APPINDICATORSHARP_LIBS=$pkg_cv_APPINDICATORSHARP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_APPINDICATORSHARP=yes
+fi
+
+
+
+	if test "x$enable_AppIndicator" = "xyes" -a "x$have_APPINDICATORSHARP" = "xno"; then
+		as_fn_error $? "AppIndicator-sharp was not found. Please install it or disable the AppIndicator extension by passing --disable-appindicator" "$LINENO" 5
+	fi
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NOTIFYSHARP" >&5
+$as_echo_n "checking for NOTIFYSHARP... " >&6; }
+
+if test -n "$NOTIFYSHARP_CFLAGS"; then
+    pkg_cv_NOTIFYSHARP_CFLAGS="$NOTIFYSHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NOTIFYSHARP_CFLAGS=`$PKG_CONFIG --cflags "notify-sharp" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$NOTIFYSHARP_LIBS"; then
+    pkg_cv_NOTIFYSHARP_LIBS="$NOTIFYSHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_NOTIFYSHARP_LIBS=`$PKG_CONFIG --libs "notify-sharp" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "notify-sharp" 2>&1`
+        else
+	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "notify-sharp" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$NOTIFYSHARP_PKG_ERRORS" >&5
+
+	have_NOTIFYSHARP=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_NOTIFYSHARP=no
+else
+	NOTIFYSHARP_CFLAGS=$pkg_cv_NOTIFYSHARP_CFLAGS
+	NOTIFYSHARP_LIBS=$pkg_cv_NOTIFYSHARP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_NOTIFYSHARP=yes
+fi
+
+
+
+	if test "x$enable_AppIndicator" = "xyes" -a "x$have_NOTIFYSHARP" = "xno"; then
+		as_fn_error $? "Notify-sharp was not found. Please install it or disable the AppIndicator extension by passing --disable-appindicator" "$LINENO" 5
+	fi
+
+
+	if test "x$enable_AppIndicator" = "xtry" \
+		&& test "x$have_APPINDICATORSHARP" = "xyes" \
+		&& test "x$have_NOTIFYSHARP" = "xyes"; then
+		enable_AppIndicator=yes
+	fi
+
+	if test "x$enable_AppIndicator" = "xyes"; then
+		 if true; then
+  ENABLE_APPINDICATOR_TRUE=
+  ENABLE_APPINDICATOR_FALSE='#'
+else
+  ENABLE_APPINDICATOR_TRUE='#'
+  ENABLE_APPINDICATOR_FALSE=
+fi
+
+	else
+		enable_AppIndicator=no
+		 if false; then
+  ENABLE_APPINDICATOR_TRUE=
+  ENABLE_APPINDICATOR_FALSE='#'
+else
+  ENABLE_APPINDICATOR_TRUE='#'
+  ENABLE_APPINDICATOR_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-awn was given.
+if test "${enable_awn+set}" = set; then :
+  enableval=$enable_awn; enable_Awn=$enableval
+else
+  enable_Awn=yes
+
+fi
+
+
+
+	if test "x$enable_Awn" = "xyes"; then
+		 if true; then
+  ENABLE_AWN_TRUE=
+  ENABLE_AWN_FALSE='#'
+else
+  ENABLE_AWN_TRUE='#'
+  ENABLE_AWN_FALSE=
+fi
+
+	else
+		 if false; then
+  ENABLE_AWN_TRUE=
+  ENABLE_AWN_FALSE='#'
+else
+  ENABLE_AWN_TRUE='#'
+  ENABLE_AWN_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-clutterflow was given.
+if test "${enable_clutterflow+set}" = set; then :
+  enableval=$enable_clutterflow; enable_ClutterFlow=$enableval
+else
+  enable_ClutterFlow=try
+
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLUTTER_SHARP" >&5
+$as_echo_n "checking for CLUTTER_SHARP... " >&6; }
+
+if test -n "$CLUTTER_SHARP_CFLAGS"; then
+    pkg_cv_CLUTTER_SHARP_CFLAGS="$CLUTTER_SHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"clutter-sharp clutter-gtk-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "clutter-sharp clutter-gtk-sharp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CLUTTER_SHARP_CFLAGS=`$PKG_CONFIG --cflags "clutter-sharp clutter-gtk-sharp" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$CLUTTER_SHARP_LIBS"; then
+    pkg_cv_CLUTTER_SHARP_LIBS="$CLUTTER_SHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"clutter-sharp clutter-gtk-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "clutter-sharp clutter-gtk-sharp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CLUTTER_SHARP_LIBS=`$PKG_CONFIG --libs "clutter-sharp clutter-gtk-sharp" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        CLUTTER_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "clutter-sharp clutter-gtk-sharp" 2>&1`
+        else
+	        CLUTTER_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "clutter-sharp clutter-gtk-sharp" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$CLUTTER_SHARP_PKG_ERRORS" >&5
+
+	have_CLUTTER_SHARP=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_CLUTTER_SHARP=no
+else
+	CLUTTER_SHARP_CFLAGS=$pkg_cv_CLUTTER_SHARP_CFLAGS
+	CLUTTER_SHARP_LIBS=$pkg_cv_CLUTTER_SHARP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_CLUTTER_SHARP=yes
+fi
+
+
+
+	if test "x$enable_ClutterFlow" = "xyes" -a "x$have_CLUTTER_SHARP" = "xno"; then
+		as_fn_error $? "clutter-sharp was not found. Please install clutter-sharp or disable the ClutterFlow extension by passing --disable-clutterflow" "$LINENO" 5
+	fi
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BANSHEE_NOWPLAYING" >&5
+$as_echo_n "checking for BANSHEE_NOWPLAYING... " >&6; }
+
+if test -n "$BANSHEE_NOWPLAYING_CFLAGS"; then
+    pkg_cv_BANSHEE_NOWPLAYING_CFLAGS="$BANSHEE_NOWPLAYING_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-nowplaying\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-nowplaying") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BANSHEE_NOWPLAYING_CFLAGS=`$PKG_CONFIG --cflags "banshee-1-nowplaying" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$BANSHEE_NOWPLAYING_LIBS"; then
+    pkg_cv_BANSHEE_NOWPLAYING_LIBS="$BANSHEE_NOWPLAYING_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-nowplaying\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-nowplaying") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BANSHEE_NOWPLAYING_LIBS=`$PKG_CONFIG --libs "banshee-1-nowplaying" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        BANSHEE_NOWPLAYING_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "banshee-1-nowplaying" 2>&1`
+        else
+	        BANSHEE_NOWPLAYING_PKG_ERRORS=`$PKG_CONFIG --print-errors "banshee-1-nowplaying" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$BANSHEE_NOWPLAYING_PKG_ERRORS" >&5
+
+	have_BANSHEE_NOWPLAYING=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_BANSHEE_NOWPLAYING=no
+else
+	BANSHEE_NOWPLAYING_CFLAGS=$pkg_cv_BANSHEE_NOWPLAYING_CFLAGS
+	BANSHEE_NOWPLAYING_LIBS=$pkg_cv_BANSHEE_NOWPLAYING_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_BANSHEE_NOWPLAYING=yes
+fi
+
+
+
+	if test "x$enable_ClutterFlow" = "xyes" -a "x$have_BANSHEE_NOWPLAYING" = "xno"; then
+		as_fn_error $? "The Banshee NowPlaying extension was not found. Please install it or disable the ClutterFlow extension by passing --disable-clutterflow" "$LINENO" 5
+	fi
+
+
+	if test "x$enable_ClutterFlow" = "xtry" \
+		&& test "x$have_CLUTTER_SHARP" = "xyes" \
+		&& test "x$have_BANSHEE_NOWPLAYING" = "xyes"; then
+		enable_ClutterFlow=yes
+	fi
+
+	if test "x$enable_ClutterFlow" = "xyes"; then
+		CLUTTER_BUNDLEFILES="`$PKG_CONFIG --variable=bundlefiles clutter-sharp` `$PKG_CONFIG --variable=bundlefiles clutter-gtk-sharp`"
+
+		 if true; then
+  ENABLE_CLUTTERFLOW_TRUE=
+  ENABLE_CLUTTERFLOW_FALSE='#'
+else
+  ENABLE_CLUTTERFLOW_TRUE='#'
+  ENABLE_CLUTTERFLOW_FALSE=
+fi
+
+	else
+		enable_ClutterFlow=no
+		 if false; then
+  ENABLE_CLUTTERFLOW_TRUE=
+  ENABLE_CLUTTERFLOW_FALSE='#'
+else
+  ENABLE_CLUTTERFLOW_TRUE='#'
+  ENABLE_CLUTTERFLOW_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-coverwallpaper was given.
+if test "${enable_coverwallpaper+set}" = set; then :
+  enableval=$enable_coverwallpaper; enable_CoverWallpaper=$enableval
+else
+  enable_CoverWallpaper=yes
+
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONFSHARP" >&5
+$as_echo_n "checking for GCONFSHARP... " >&6; }
+
+if test -n "$GCONFSHARP_CFLAGS"; then
+    pkg_cv_GCONFSHARP_CFLAGS="$GCONFSHARP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GCONFSHARP_CFLAGS=`$PKG_CONFIG --cflags "gconf-sharp-2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$GCONFSHARP_LIBS"; then
+    pkg_cv_GCONFSHARP_LIBS="$GCONFSHARP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GCONFSHARP_LIBS=`$PKG_CONFIG --libs "gconf-sharp-2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GCONFSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gconf-sharp-2.0" 2>&1`
+        else
+	        GCONFSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gconf-sharp-2.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GCONFSHARP_PKG_ERRORS" >&5
+
+	have_GCONFSHARP=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_GCONFSHARP=no
+else
+	GCONFSHARP_CFLAGS=$pkg_cv_GCONFSHARP_CFLAGS
+	GCONFSHARP_LIBS=$pkg_cv_GCONFSHARP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_GCONFSHARP=yes
+fi
+
+
+
+	if test "x$enable_CoverWallpaper" = "xyes" -a "x$have_GCONFSHARP" = "xno"; then
+		as_fn_error $? "GConf-sharp was not found. Please install it or disable the CoverWallpaper extension by passing --disable-coverwallpaper" "$LINENO" 5
+	fi
+
+
+	if test "x$enable_CoverWallpaper" = "xtry" \
+		&& test "x$have_GCONFSHARP" = "xyes"; then
+		enable_CoverWallpaper=yes
+	fi
+
+	if test "x$enable_CoverWallpaper" = "xyes"; then
+		 if true; then
+  ENABLE_COVERWALLPAPER_TRUE=
+  ENABLE_COVERWALLPAPER_FALSE='#'
+else
+  ENABLE_COVERWALLPAPER_TRUE='#'
+  ENABLE_COVERWALLPAPER_FALSE=
+fi
+
+	else
+		 if false; then
+  ENABLE_COVERWALLPAPER_TRUE=
+  ENABLE_COVERWALLPAPER_FALSE='#'
+else
+  ENABLE_COVERWALLPAPER_TRUE='#'
+  ENABLE_COVERWALLPAPER_FALSE=
+fi
+
+	fi
+
+
+
+	# Check whether --enable-jamendo was given.
+if test "${enable_jamendo+set}" = set; then :
+  enableval=$enable_jamendo; enable_Jamendo=$enableval
+else
+  enable_Jamendo=yes
+
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BANSHEE_WEBBROWSER" >&5
+$as_echo_n "checking for BANSHEE_WEBBROWSER... " >&6; }
+
+if test -n "$BANSHEE_WEBBROWSER_CFLAGS"; then
+    pkg_cv_BANSHEE_WEBBROWSER_CFLAGS="$BANSHEE_WEBBROWSER_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-webbrowser\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-webbrowser") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BANSHEE_WEBBROWSER_CFLAGS=`$PKG_CONFIG --cflags "banshee-1-webbrowser" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$BANSHEE_WEBBROWSER_LIBS"; then
+    pkg_cv_BANSHEE_WEBBROWSER_LIBS="$BANSHEE_WEBBROWSER_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"banshee-1-webbrowser\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "banshee-1-webbrowser") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_BANSHEE_WEBBROWSER_LIBS=`$PKG_CONFIG --libs "banshee-1-webbrowser" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        BANSHEE_WEBBROWSER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "banshee-1-webbrowser" 2>&1`
+        else
+	        BANSHEE_WEBBROWSER_PKG_ERRORS=`$PKG_CONFIG --print-errors "banshee-1-webbrowser" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$BANSHEE_WEBBROWSER_PKG_ERRORS" >&5
+
+	have_BANSHEE_WEBBROWSER=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_BANSHEE_WEBBROWSER=no
+else
+	BANSHEE_WEBBROWSER_CFLAGS=$pkg_cv_BANSHEE_WEBBROWSER_CFLAGS
+	BANSHEE_WEBBROWSER_LIBS=$pkg_cv_BANSHEE_WEBBROWSER_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_BANSHEE_WEBBROWSER=yes
+fi
+
+
+
+	if test "x$enable_Jamendo" = "xyes" -a "x$have_BANSHEE_WEBBROWSER" = "xno"; then
+		as_fn_error $? "banshee-1-webbrowser was not found. Please install it or disable the CoverWallpaper extension by passing --disable-jamendo" "$LINENO" 5
+	fi
+
+
+	if test "x$enable_Jamendo" = "xtry" \
+		&& test "x$have_BANSHEE_WEBBROWSER" = "xyes"; then
+		enable_Jamendo=yes
+	fi
+
+	if test "x$enable_Jamendo" = "xyes"; then
+		 if true; then
+  ENABLE_JAMENDO_TRUE=
+  ENABLE_JAMENDO_FALSE='#'
+else
+  ENABLE_JAMENDO_TRUE='#'
+  ENABLE_JAMENDO_FALSE=
+fi
+
+	else
+		 if false; then
+  ENABLE_JAMENDO_TRUE=
+  ENABLE_JAMENDO_FALSE='#'
+else
+  ENABLE_JAMENDO_TRUE='#'
+  ENABLE_JAMENDO_FALSE=
+fi
+
+	fi
+
+
+
+
+	# Check whether --enable-lastfmfingerprint was given.
+if test "${enable_lastfmfingerprint+set}" = set; then :
+  enableval=$enable_lastfmfingerprint; enable_LastfmFingerprint=$enableval
+else
+  enable_LastfmFingerprint=try
+
+fi
+
+
 
 
 
@@ -20761,201 +20579,6 @@ fi
 
 
 
-	# Check whether --enable-soundmenu was given.
-if test "${enable_soundmenu+set}" = set; then :
-  enableval=$enable_soundmenu; enable_SoundMenu=$enableval
-else
-  enable_SoundMenu=try
-
-fi
-
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for INDICATESHARP" >&5
-$as_echo_n "checking for INDICATESHARP... " >&6; }
-
-if test -n "$INDICATESHARP_CFLAGS"; then
-    pkg_cv_INDICATESHARP_CFLAGS="$INDICATESHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"indicate-sharp-0.1 >= 0.4.1\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "indicate-sharp-0.1 >= 0.4.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_INDICATESHARP_CFLAGS=`$PKG_CONFIG --cflags "indicate-sharp-0.1 >= 0.4.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$INDICATESHARP_LIBS"; then
-    pkg_cv_INDICATESHARP_LIBS="$INDICATESHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"indicate-sharp-0.1 >= 0.4.1\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "indicate-sharp-0.1 >= 0.4.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_INDICATESHARP_LIBS=`$PKG_CONFIG --libs "indicate-sharp-0.1 >= 0.4.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        INDICATESHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "indicate-sharp-0.1 >= 0.4.1" 2>&1`
-        else
-	        INDICATESHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "indicate-sharp-0.1 >= 0.4.1" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$INDICATESHARP_PKG_ERRORS" >&5
-
-	have_INDICATESHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_INDICATESHARP=no
-else
-	INDICATESHARP_CFLAGS=$pkg_cv_INDICATESHARP_CFLAGS
-	INDICATESHARP_LIBS=$pkg_cv_INDICATESHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_INDICATESHARP=yes
-fi
-
-
-
-	if test "x$enable_SoundMenu" = "xyes" -a "x$have_INDICATESHARP" = "xno"; then
-		as_fn_error $? "indicate-sharp was not found. Please install it or disable the SoundMenu extension by passing --disable-soundmenu" "$LINENO" 5
-	fi
-
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NOTIFYSHARP" >&5
-$as_echo_n "checking for NOTIFYSHARP... " >&6; }
-
-if test -n "$NOTIFYSHARP_CFLAGS"; then
-    pkg_cv_NOTIFYSHARP_CFLAGS="$NOTIFYSHARP_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NOTIFYSHARP_CFLAGS=`$PKG_CONFIG --cflags "notify-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$NOTIFYSHARP_LIBS"; then
-    pkg_cv_NOTIFYSHARP_LIBS="$NOTIFYSHARP_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NOTIFYSHARP_LIBS=`$PKG_CONFIG --libs "notify-sharp" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "notify-sharp" 2>&1`
-        else
-	        NOTIFYSHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "notify-sharp" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$NOTIFYSHARP_PKG_ERRORS" >&5
-
-	have_NOTIFYSHARP=no
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	have_NOTIFYSHARP=no
-else
-	NOTIFYSHARP_CFLAGS=$pkg_cv_NOTIFYSHARP_CFLAGS
-	NOTIFYSHARP_LIBS=$pkg_cv_NOTIFYSHARP_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_NOTIFYSHARP=yes
-fi
-
-
-
-	if test "x$enable_SoundMenu" = "xyes" -a "x$have_NOTIFYSHARP" = "xno"; then
-		as_fn_error $? "Notify-sharp was not found. Please install it or disable the SoundMenu extension by passing --disable-soundmenu" "$LINENO" 5
-	fi
-
-
-	if test "x$enable_SoundMenu" = "xtry" \
-		&& test "x$have_INDICATESHARP" = "xyes" \
-		&& test "x$have_NOTIFYSHARP" = "xyes"; then
-		enable_SoundMenu=yes
-	fi
-
-	if test "x$enable_SoundMenu" = "xyes"; then
-		 if true; then
-  ENABLE_SOUNDMENU_TRUE=
-  ENABLE_SOUNDMENU_FALSE='#'
-else
-  ENABLE_SOUNDMENU_TRUE='#'
-  ENABLE_SOUNDMENU_FALSE=
-fi
-
-	else
-		enable_SoundMenu=no
-		 if false; then
-  ENABLE_SOUNDMENU_TRUE=
-  ENABLE_SOUNDMENU_FALSE='#'
-else
-  ENABLE_SOUNDMENU_TRUE='#'
-  ENABLE_SOUNDMENU_FALSE=
-fi
-
-	fi
-
-
-
 	# Check whether --enable-streamrecorder was given.
 if test "${enable_streamrecorder+set}" = set; then :
   enableval=$enable_streamrecorder; enable_StreamRecorder=$enableval
@@ -21183,11 +20806,11 @@ fi
 
 
 
-	# Check whether --enable-ubuntuonemusicstore was given.
-if test "${enable_ubuntuonemusicstore+set}" = set; then :
-  enableval=$enable_ubuntuonemusicstore; enable_UbuntuOneMusicStore=$enableval
+	# Check whether --enable-zeitgeistdataprovider was given.
+if test "${enable_zeitgeistdataprovider+set}" = set; then :
+  enableval=$enable_zeitgeistdataprovider; enable_ZeitgeistDataprovider=$enableval
 else
-  enable_UbuntuOneMusicStore=try
+  enable_ZeitgeistDataprovider=try
 
 fi
 
@@ -21196,35 +20819,35 @@ fi
 
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UBUNTUONESHARP" >&5
-$as_echo_n "checking for UBUNTUONESHARP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZEITGEIST_SHARP" >&5
+$as_echo_n "checking for ZEITGEIST_SHARP... " >&6; }
 
-if test -n "$UBUNTUONESHARP_CFLAGS"; then
-    pkg_cv_UBUNTUONESHARP_CFLAGS="$UBUNTUONESHARP_CFLAGS"
+if test -n "$ZEITGEIST_SHARP_CFLAGS"; then
+    pkg_cv_ZEITGEIST_SHARP_CFLAGS="$ZEITGEIST_SHARP_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ubuntuone-sharp-1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "ubuntuone-sharp-1.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zeitgeist-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "zeitgeist-sharp") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_UBUNTUONESHARP_CFLAGS=`$PKG_CONFIG --cflags "ubuntuone-sharp-1.0" 2>/dev/null`
+  pkg_cv_ZEITGEIST_SHARP_CFLAGS=`$PKG_CONFIG --cflags "zeitgeist-sharp" 2>/dev/null`
 else
   pkg_failed=yes
 fi
  else
     pkg_failed=untried
 fi
-if test -n "$UBUNTUONESHARP_LIBS"; then
-    pkg_cv_UBUNTUONESHARP_LIBS="$UBUNTUONESHARP_LIBS"
+if test -n "$ZEITGEIST_SHARP_LIBS"; then
+    pkg_cv_ZEITGEIST_SHARP_LIBS="$ZEITGEIST_SHARP_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ubuntuone-sharp-1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "ubuntuone-sharp-1.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zeitgeist-sharp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "zeitgeist-sharp") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_UBUNTUONESHARP_LIBS=`$PKG_CONFIG --libs "ubuntuone-sharp-1.0" 2>/dev/null`
+  pkg_cv_ZEITGEIST_SHARP_LIBS=`$PKG_CONFIG --libs "zeitgeist-sharp" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -21244,55 +20867,54 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        UBUNTUONESHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "ubuntuone-sharp-1.0" 2>&1`
+	        ZEITGEIST_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "zeitgeist-sharp" 2>&1`
         else
-	        UBUNTUONESHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "ubuntuone-sharp-1.0" 2>&1`
+	        ZEITGEIST_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "zeitgeist-sharp" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$UBUNTUONESHARP_PKG_ERRORS" >&5
+	echo "$ZEITGEIST_SHARP_PKG_ERRORS" >&5
 
-	have_UBUNTUONESHARP=no
+	have_ZEITGEIST_SHARP=no
 elif test $pkg_failed = untried; then
      	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-	have_UBUNTUONESHARP=no
+	have_ZEITGEIST_SHARP=no
 else
-	UBUNTUONESHARP_CFLAGS=$pkg_cv_UBUNTUONESHARP_CFLAGS
-	UBUNTUONESHARP_LIBS=$pkg_cv_UBUNTUONESHARP_LIBS
+	ZEITGEIST_SHARP_CFLAGS=$pkg_cv_ZEITGEIST_SHARP_CFLAGS
+	ZEITGEIST_SHARP_LIBS=$pkg_cv_ZEITGEIST_SHARP_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-	have_UBUNTUONESHARP=yes
+	have_ZEITGEIST_SHARP=yes
 fi
 
 
 
-	if test "x$enable_UbuntuOneMusicStore" = "xyes" -a "x$have_UBUNTUONESHARP" = "xno"; then
-		as_fn_error $? "UbuntuOne-sharp was not found. Please install it or disable the UbuntuOneMusicStore extension by passing --disable-ubuntuonemusicstore" "$LINENO" 5
+	if test "x$enable_ZeitgeistDataprovider" = "xyes" -a "x$have_ZEITGEIST_SHARP" = "xno"; then
+		as_fn_error $? "zeitgeist-sharp was not found. Please install it or disable the ZeitgeistDp extension by passing --disable-zeitgeistdataprovider" "$LINENO" 5
 	fi
 
 
-	if test "x$enable_UbuntuOneMusicStore" = "xtry" \
-		&& test "x$have_UBUNTUONESHARP" = "xyes"; then
-		enable_UbuntuOneMusicStore=yes
+	if test "x$enable_ZeitgeistDataprovider" = "xtry" \
+		&& test "x$have_ZEITGEIST_SHARP" = "xyes"; then
+		enable_ZeitgeistDataprovider=yes
 	fi
 
-	if test "x$enable_UbuntuOneMusicStore" = "xyes"; then
+	if test "x$enable_ZeitgeistDataprovider" = "xyes"; then
 		 if true; then
-  ENABLE_U1MS_TRUE=
-  ENABLE_U1MS_FALSE='#'
+  ENABLE_ZEITGEISTDATAPROVIDER_TRUE=
+  ENABLE_ZEITGEISTDATAPROVIDER_FALSE='#'
 else
-  ENABLE_U1MS_TRUE='#'
-  ENABLE_U1MS_FALSE=
+  ENABLE_ZEITGEISTDATAPROVIDER_TRUE='#'
+  ENABLE_ZEITGEISTDATAPROVIDER_FALSE=
 fi
 
 	else
-		enable_UbuntuOneMusicStore=no
 		 if false; then
-  ENABLE_U1MS_TRUE=
-  ENABLE_U1MS_FALSE='#'
+  ENABLE_ZEITGEISTDATAPROVIDER_TRUE=
+  ENABLE_ZEITGEISTDATAPROVIDER_FALSE='#'
 else
-  ENABLE_U1MS_TRUE='#'
-  ENABLE_U1MS_FALSE=
+  ENABLE_ZEITGEISTDATAPROVIDER_TRUE='#'
+  ENABLE_ZEITGEISTDATAPROVIDER_FALSE=
 fi
 
 	fi
@@ -21411,7 +21033,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile build/Makefile build/m4/Makefile build/m4/shave/shave build/m4/shave/shave-libtool help/Makefile po/Makefile.in src/Makefile src/Ampache/Makefile src/AppIndicator/Makefile src/AssemblyInfo.cs src/AlarmClock/Makefile src/Awn/Makefile src/ClutterFlow/Makefile src/ClutterFlow/Banshee.ClutterFlow/Makefile src/ClutterFlow/ClutterFlow/Makefile src/CoverWallpaper/Makefile src/LastfmFingerprint/Makefile src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile src/LastfmFingerprint/liblastfmfpbridge/Makefile src/LCD/Makefile src/Lirc/Makefile src/Lirc/lirc-glue/Makefile src/Lirc/Banshee.Lirc/Makefile src/Lirc/GUITestHarness/Makefile src/Lirc/NUnitTests/Makefile src/LiveRadio/Makefile src/Lyrics/Makefile src/OpenVP/Makefile src/OpenVP/Cdh.Affe/Makefile src/OpenVP/Cdh.Affe.Tests/Makefile src/OpenVP/OpenVP/Makefile src/OpenVP/OpenVP.Core/Makefile src/OpenVP/OpenVP.Scripting/Makefile src/OpenVP/Banshee.OpenVP/Makefile src/OpenVP/Banshee.OpenVP.Visualizations/Makefile src/Magnatune/Makefile src/Mirage/Makefile src/Mirage/libmirageaudio/Makefile src/Mirage/Mirage/Makefile src/Mirage/Banshee.Mirage/Makefile src/Mirage/Test/Makefile src/RadioStationFetcher/Makefile src/RandomByLastfm/Makefile src/SoundMenu/Makefile src/StreamRecorder/Makefile src/Telepathy/Makefile src/Telepathy/Banshee.Telepathy/Makefile src/UbuntuOneMusicStore/Makefile"
+ac_config_files="$ac_config_files Makefile build/Makefile build/m4/Makefile build/m4/shave/shave build/m4/shave/shave-libtool help/Makefile po/Makefile.in src/Makefile src/AssemblyInfo.cs src/AlarmClock/Makefile src/Ampache/Makefile src/AppIndicator/Makefile src/Awn/Makefile src/ClutterFlow/Makefile src/ClutterFlow/Banshee.ClutterFlow/Makefile src/ClutterFlow/ClutterFlow/Makefile src/CoverWallpaper/Makefile src/Jamendo/Makefile src/LastfmFingerprint/Makefile src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile src/LastfmFingerprint/liblastfmfpbridge/Makefile src/LCD/Makefile src/Lirc/Makefile src/Lirc/lirc-glue/Makefile src/Lirc/Banshee.Lirc/Makefile src/Lirc/GUITestHarness/Makefile src/Lirc/NUnitTests/Makefile src/LiveRadio/Makefile src/Lyrics/Makefile src/OpenVP/Makefile src/OpenVP/Cdh.Affe/Makefile src/OpenVP/Cdh.Affe.Tests/Makefile src/OpenVP/OpenVP/Makefile src/OpenVP/OpenVP.Core/Makefile src/OpenVP/OpenVP.Scripting/Makefile src/OpenVP/Banshee.OpenVP/Makefile src/OpenVP/Banshee.OpenVP.Visualizations/Makefile src/Magnatune/Makefile src/Mirage/Makefile src/Mirage/libmirageaudio/Makefile src/Mirage/Mirage/Makefile src/Mirage/Banshee.Mirage/Makefile src/Mirage/Test/Makefile src/RadioStationFetcher/Makefile src/RandomByLastfm/Makefile src/StreamRecorder/Makefile src/Telepathy/Makefile src/Telepathy/Banshee.Telepathy/Makefile src/ZeitgeistDataprovider/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -21555,6 +21177,14 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then
   as_fn_error $? "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -21635,16 +21265,12 @@ if test -z "${ENABLE_COVERWALLPAPER_TRUE}" && test -z "${ENABLE_COVERWALLPAPER_F
   as_fn_error $? "conditional \"ENABLE_COVERWALLPAPER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+if test -z "${ENABLE_JAMENDO_TRUE}" && test -z "${ENABLE_JAMENDO_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_JAMENDO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+if test -z "${ENABLE_JAMENDO_TRUE}" && test -z "${ENABLE_JAMENDO_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_JAMENDO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${ENABLE_LASTFMFINGERPRINT_TRUE}" && test -z "${ENABLE_LASTFMFINGERPRINT_FALSE}"; then
@@ -21727,14 +21353,6 @@ if test -z "${ENABLE_RANDOMBYLASTFM_TRUE}" && test -z "${ENABLE_RANDOMBYLASTFM_F
   as_fn_error $? "conditional \"ENABLE_RANDOMBYLASTFM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_SOUNDMENU_TRUE}" && test -z "${ENABLE_SOUNDMENU_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_SOUNDMENU\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_SOUNDMENU_TRUE}" && test -z "${ENABLE_SOUNDMENU_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_SOUNDMENU\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${ENABLE_STREAMRECORDER_TRUE}" && test -z "${ENABLE_STREAMRECORDER_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_STREAMRECORDER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -21751,12 +21369,12 @@ if test -z "${ENABLE_TELEPATHY_TRUE}" && test -z "${ENABLE_TELEPATHY_FALSE}"; th
   as_fn_error $? "conditional \"ENABLE_TELEPATHY\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_U1MS_TRUE}" && test -z "${ENABLE_U1MS_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_U1MS\" was never defined.
+if test -z "${ENABLE_ZEITGEISTDATAPROVIDER_TRUE}" && test -z "${ENABLE_ZEITGEISTDATAPROVIDER_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_ZEITGEISTDATAPROVIDER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_U1MS_TRUE}" && test -z "${ENABLE_U1MS_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_U1MS\" was never defined.
+if test -z "${ENABLE_ZEITGEISTDATAPROVIDER_TRUE}" && test -z "${ENABLE_ZEITGEISTDATAPROVIDER_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_ZEITGEISTDATAPROVIDER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
@@ -22167,7 +21785,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by banshee-community-extensions $as_me 1.9.0, which was
+This file was extended by banshee-community-extensions $as_me 1.9.1, which was
 generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22233,7 +21851,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-banshee-community-extensions config.status 1.9.0
+banshee-community-extensions config.status 1.9.1
 configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
@@ -22726,15 +22344,16 @@ do
     "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "src/Ampache/Makefile") CONFIG_FILES="$CONFIG_FILES src/Ampache/Makefile" ;;
-    "src/AppIndicator/Makefile") CONFIG_FILES="$CONFIG_FILES src/AppIndicator/Makefile" ;;
     "src/AssemblyInfo.cs") CONFIG_FILES="$CONFIG_FILES src/AssemblyInfo.cs" ;;
     "src/AlarmClock/Makefile") CONFIG_FILES="$CONFIG_FILES src/AlarmClock/Makefile" ;;
+    "src/Ampache/Makefile") CONFIG_FILES="$CONFIG_FILES src/Ampache/Makefile" ;;
+    "src/AppIndicator/Makefile") CONFIG_FILES="$CONFIG_FILES src/AppIndicator/Makefile" ;;
     "src/Awn/Makefile") CONFIG_FILES="$CONFIG_FILES src/Awn/Makefile" ;;
     "src/ClutterFlow/Makefile") CONFIG_FILES="$CONFIG_FILES src/ClutterFlow/Makefile" ;;
     "src/ClutterFlow/Banshee.ClutterFlow/Makefile") CONFIG_FILES="$CONFIG_FILES src/ClutterFlow/Banshee.ClutterFlow/Makefile" ;;
     "src/ClutterFlow/ClutterFlow/Makefile") CONFIG_FILES="$CONFIG_FILES src/ClutterFlow/ClutterFlow/Makefile" ;;
     "src/CoverWallpaper/Makefile") CONFIG_FILES="$CONFIG_FILES src/CoverWallpaper/Makefile" ;;
+    "src/Jamendo/Makefile") CONFIG_FILES="$CONFIG_FILES src/Jamendo/Makefile" ;;
     "src/LastfmFingerprint/Makefile") CONFIG_FILES="$CONFIG_FILES src/LastfmFingerprint/Makefile" ;;
     "src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile") CONFIG_FILES="$CONFIG_FILES src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile" ;;
     "src/LastfmFingerprint/liblastfmfpbridge/Makefile") CONFIG_FILES="$CONFIG_FILES src/LastfmFingerprint/liblastfmfpbridge/Makefile" ;;
@@ -22762,11 +22381,10 @@ do
     "src/Mirage/Test/Makefile") CONFIG_FILES="$CONFIG_FILES src/Mirage/Test/Makefile" ;;
     "src/RadioStationFetcher/Makefile") CONFIG_FILES="$CONFIG_FILES src/RadioStationFetcher/Makefile" ;;
     "src/RandomByLastfm/Makefile") CONFIG_FILES="$CONFIG_FILES src/RandomByLastfm/Makefile" ;;
-    "src/SoundMenu/Makefile") CONFIG_FILES="$CONFIG_FILES src/SoundMenu/Makefile" ;;
     "src/StreamRecorder/Makefile") CONFIG_FILES="$CONFIG_FILES src/StreamRecorder/Makefile" ;;
     "src/Telepathy/Makefile") CONFIG_FILES="$CONFIG_FILES src/Telepathy/Makefile" ;;
     "src/Telepathy/Banshee.Telepathy/Makefile") CONFIG_FILES="$CONFIG_FILES src/Telepathy/Banshee.Telepathy/Makefile" ;;
-    "src/UbuntuOneMusicStore/Makefile") CONFIG_FILES="$CONFIG_FILES src/UbuntuOneMusicStore/Makefile" ;;
+    "src/ZeitgeistDataprovider/Makefile") CONFIG_FILES="$CONFIG_FILES src/ZeitgeistDataprovider/Makefile" ;;
     "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
@@ -24340,25 +23958,25 @@ ${PACKAGE}-${VERSION}
     User Help:           ${enable_user_help} (requires gnome-doc-utils >= 0.17.3)
 
   Extensions:
-    Alarm Clock:         ${enable_AlarmClock}
-    Ampache:             ${enable_Ampache}
-    AppIndicator:        ${enable_AppIndicator}
-    Awn:                 ${enable_Awn}
-    ClutterFlow:         ${enable_ClutterFlow}
-    CoverWallpaper:      ${enable_CoverWallpaper}
-    LastfmFingerprint:   ${enable_LastfmFingerprint}
-    LCD:                 ${enable_LCD}
-    Lirc:                ${enable_Lirc}
-    LiveRadio:           ${enable_LiveRadio}
-    Lyrics:              ${enable_Lyrics}
-    Magnatune:           ${enable_Magnatune}
-    Mirage:              ${enable_Mirage}
-    OpenVP:              ${enable_OpenVP}
-    RadioStationFetcher: ${enable_RadioStationFetcher}
-    RandomByLastfm:      ${enable_RandomByLastfm}
-    SoundMenu:           ${enable_SoundMenu}
-    StreamRecorder:      ${enable_StreamRecorder}
-    Telepathy:           ${enable_Telepathy}
-    UbuntuOneMusicStore: ${enable_UbuntuOneMusicStore}
+    Alarm Clock:           ${enable_AlarmClock}
+    Ampache:               ${enable_Ampache}
+    AppIndicator:          ${enable_AppIndicator}
+    Awn:                   ${enable_Awn}
+    ClutterFlow:           ${enable_ClutterFlow}
+    CoverWallpaper:        ${enable_CoverWallpaper}
+    Jamendo:               ${enable_Jamendo}
+    LastfmFingerprint:     ${enable_LastfmFingerprint}
+    LCD:                   ${enable_LCD}
+    Lirc:                  ${enable_Lirc}
+    LiveRadio:             ${enable_LiveRadio}
+    Lyrics:                ${enable_Lyrics}
+    Magnatune:             ${enable_Magnatune}
+    Mirage:                ${enable_Mirage}
+    OpenVP:                ${enable_OpenVP}
+    RadioStationFetcher:   ${enable_RadioStationFetcher}
+    RandomByLastfm:        ${enable_RandomByLastfm}
+    StreamRecorder:        ${enable_StreamRecorder}
+    Telepathy:             ${enable_Telepathy}
+    ZeitgeistDataprovider: ${enable_ZeitgeistDataprovider}
 
 EOF
diff --git a/configure.ac b/configure.ac
index e1584ba..964c3c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ(2.52)
-AC_INIT([banshee-community-extensions], 1.9.0,
+AC_INIT([banshee-community-extensions], 1.9.1,
 	[http://bugzilla.gnome.org/enter_bug.cgi?product=banshee&component=Community%20Extensions])
 
 AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar dist-zip foreign])
@@ -12,7 +12,7 @@ AC_PROG_LIBTOOL
 AC_PROG_INSTALL
 
 dnl How to configure for distcheck
-DISTCHECK_CONFIGURE_FLAGS="--enable-release"
+DISTCHECK_CONFIGURE_FLAGS="--enable-release --enable-tests"
 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
 
 dnl Expansions
@@ -29,7 +29,7 @@ SHAMROCK_FIND_MONO_2_0_COMPILER
 SHAMROCK_FIND_MONO_RUNTIME
 
 dnl Banshee deps
-PKG_CHECK_MODULES(BANSHEE, banshee-1-thickclient >= 1.7.4)
+PKG_CHECK_MODULES(BANSHEE, banshee-1-thickclient >= 1.9.1)
 AC_SUBST(BANSHEE_LIBS)
 
 dnl Banshee Extensions Path
@@ -38,6 +38,7 @@ BCE_FIND_BANSHEE
 dnl For native/glue libraries
 AC_ISC_POSIX
 AC_PROG_CC
+AC_PROG_CXX
 AC_HEADER_STDC
 
 dnl GNOME (optional)
@@ -82,6 +83,7 @@ BCE_APPINDICATOR
 BCE_AWN
 BCE_CLUTTERFLOW
 BCE_COVERWALLPAPER
+BCE_JAMENDO
 BCE_LASTFMFINGERPRINT
 BCE_LCD
 BCE_LIRC
@@ -92,10 +94,9 @@ BCE_MIRAGE
 BCE_OPENVP
 BCE_RADIOSTATIONFETCHER
 BCE_RANDOMBYLASTFM
-BCE_SOUNDMENU
 BCE_STREAMRECORDER
 BCE_TELEPATHY
-BCE_U1MS
+BCE_ZEITGEISTDP
 
 AC_ARG_WITH(vendor-build-id,
 	AC_HELP_STRING([--with-vendor-build-id=<vendor-build-id>],
@@ -130,16 +131,17 @@ help/Makefile
 po/Makefile.in
 
 src/Makefile
-src/Ampache/Makefile
-src/AppIndicator/Makefile
 src/AssemblyInfo.cs
 
 src/AlarmClock/Makefile
+src/Ampache/Makefile
+src/AppIndicator/Makefile
 src/Awn/Makefile
 src/ClutterFlow/Makefile
 src/ClutterFlow/Banshee.ClutterFlow/Makefile
 src/ClutterFlow/ClutterFlow/Makefile
 src/CoverWallpaper/Makefile
+src/Jamendo/Makefile
 src/LastfmFingerprint/Makefile
 src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile
 src/LastfmFingerprint/liblastfmfpbridge/Makefile
@@ -167,11 +169,10 @@ src/Mirage/Banshee.Mirage/Makefile
 src/Mirage/Test/Makefile
 src/RadioStationFetcher/Makefile
 src/RandomByLastfm/Makefile
-src/SoundMenu/Makefile
 src/StreamRecorder/Makefile
 src/Telepathy/Makefile
 src/Telepathy/Banshee.Telepathy/Makefile
-src/UbuntuOneMusicStore/Makefile
+src/ZeitgeistDataprovider/Makefile
 ])
 
 cat <<EOF
@@ -195,25 +196,25 @@ ${PACKAGE}-${VERSION}
     User Help:           ${enable_user_help} (requires gnome-doc-utils >= 0.17.3)
 
   Extensions:
-    Alarm Clock:         ${enable_AlarmClock}
-    Ampache:             ${enable_Ampache}
-    AppIndicator:        ${enable_AppIndicator}
-    Awn:                 ${enable_Awn}
-    ClutterFlow:         ${enable_ClutterFlow}
-    CoverWallpaper:      ${enable_CoverWallpaper}
-    LastfmFingerprint:   ${enable_LastfmFingerprint}
-    LCD:                 ${enable_LCD}
-    Lirc:                ${enable_Lirc}
-    LiveRadio:           ${enable_LiveRadio}
-    Lyrics:              ${enable_Lyrics}
-    Magnatune:           ${enable_Magnatune}
-    Mirage:              ${enable_Mirage}
-    OpenVP:              ${enable_OpenVP}
-    RadioStationFetcher: ${enable_RadioStationFetcher}
-    RandomByLastfm:      ${enable_RandomByLastfm}
-    SoundMenu:           ${enable_SoundMenu}
-    StreamRecorder:      ${enable_StreamRecorder}
-    Telepathy:           ${enable_Telepathy}
-    UbuntuOneMusicStore: ${enable_UbuntuOneMusicStore}
+    Alarm Clock:           ${enable_AlarmClock}
+    Ampache:               ${enable_Ampache}
+    AppIndicator:          ${enable_AppIndicator}
+    Awn:                   ${enable_Awn}
+    ClutterFlow:           ${enable_ClutterFlow}
+    CoverWallpaper:        ${enable_CoverWallpaper}
+    Jamendo:               ${enable_Jamendo}
+    LastfmFingerprint:     ${enable_LastfmFingerprint}
+    LCD:                   ${enable_LCD}
+    Lirc:                  ${enable_Lirc}
+    LiveRadio:             ${enable_LiveRadio}
+    Lyrics:                ${enable_Lyrics}
+    Magnatune:             ${enable_Magnatune}
+    Mirage:                ${enable_Mirage}
+    OpenVP:                ${enable_OpenVP}
+    RadioStationFetcher:   ${enable_RadioStationFetcher}
+    RandomByLastfm:        ${enable_RandomByLastfm}
+    StreamRecorder:        ${enable_StreamRecorder}
+    Telepathy:             ${enable_Telepathy}
+    ZeitgeistDataprovider: ${enable_ZeitgeistDataprovider}
 
 EOF
diff --git a/help/Makefile.in b/help/Makefile.in
index da3cb7c..68a4858 100644
--- a/help/Makefile.in
+++ b/help/Makefile.in
@@ -69,6 +69,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -79,10 +80,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -113,8 +113,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -178,8 +180,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -223,6 +223,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -257,12 +258,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d8439b8..b661712 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,16 +7,16 @@ src/AlarmClock/Banshee.AlarmClock/AlarmConfigDialog.cs
 src/AlarmClock/Banshee.AlarmClock/ConfigurationDialog.cs
 src/AlarmClock/Banshee.AlarmClock/SleepTimerConfigDialog.cs
 src/Ampache/Banshee.Ampache/Gui/AmpacheView.cs
-src/Ampache/gtk-gui/Banshee.Ampache.AmpacheView.cs
 src/Ampache/gtk-gui/Banshee.Ampache.PreferenceView.cs
 src/AppIndicator/Banshee.AppIndicator/AppIndicatorService.cs
 src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowContents.cs
 src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowSchemas.cs
 src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowService.cs
+src/Jamendo/Banshee.Jamendo/JamendoDownloadManager.cs
+src/Jamendo/Banshee.Jamendo/JamendoWebBrowserShell.cs
 src/LastfmFingerprint/Banshee.LastfmFingerprint/LastfmFingerprintService.cs
 src/LCD/Banshee.LCD/ConfigurationDialog.cs
 src/LCD/Banshee.LCD/LCDService.cs
-src/Lirc/Banshee.Lirc/gtk-gui/Banshee.Lirc.ConfigDialog.cs
 src/LiveRadio/Banshee.LiveRadio/LiveRadioConfigDialog.cs
 src/LiveRadio/Banshee.LiveRadio/LiveRadioFilterView.cs
 src/LiveRadio/Banshee.LiveRadio/LiveRadioPlugins/LiveRadioBasePlugin.cs
@@ -43,7 +43,6 @@ src/RadioStationFetcher/Banshee.RadioStationFetcher/RadioStationFetcherService.c
 src/RadioStationFetcher/Banshee.RadioStationFetcher/Xiph.cs
 src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs
 src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs
-src/SoundMenu/Banshee.SoundMenu/SoundMenuService.cs
 src/StreamRecorder/Banshee.Streamrecorder/StreamrecorderConfigDialog.cs
 src/StreamRecorder/Banshee.Streamrecorder/StreamrecorderService.cs
 src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.Data/ContactContainerSource.cs
@@ -56,4 +55,3 @@ src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.Gui/DownloadManagerUi.cs
 src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.Gui/TelepathyActions.cs
 src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.Gui/TelepathyNotification.cs
 src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.Gui/TransferManagerUi.cs
-src/UbuntuOneMusicStore/Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs
diff --git a/src/AlarmClock/Makefile.in b/src/AlarmClock/Makefile.in
index 10bead6..3910a7c 100644
--- a/src/AlarmClock/Makefile.in
+++ b/src/AlarmClock/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -375,7 +376,7 @@ RESOURCES = \
 @ENABLE_ALARMCLOCK_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_ALARMCLOCK_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_ALARMCLOCK_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_ALARMCLOCK_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_ALARMCLOCK_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_ALARMCLOCK_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_ALARMCLOCK_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -609,6 +610,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_ALARMCLOCK_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_ALARMCLOCK_TRUE@check: test
+
 @ENABLE_ALARMCLOCK_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_ALARMCLOCK_TRUE at run: 
diff --git a/src/Ampache/Banshee.Ampache/AmpachePreferences.cs b/src/Ampache/Banshee.Ampache/AmpachePreferences.cs
old mode 100644
new mode 100755
diff --git a/src/Ampache/Banshee.Ampache/AmpacheSource.cs b/src/Ampache/Banshee.Ampache/AmpacheSource.cs
index f5331b4..163c9c8 100755
--- a/src/Ampache/Banshee.Ampache/AmpacheSource.cs
+++ b/src/Ampache/Banshee.Ampache/AmpacheSource.cs
@@ -25,6 +25,8 @@
 // THE SOFTWARE.
 
 using System;
+using System.Threading;
+using System.Linq;
 
 using Banshee.Configuration;
 using Banshee.Collection;
@@ -47,17 +49,16 @@ namespace Banshee.Ampache
         private TrackListModel _trackModel;
         private PlayQueue _queue;
         private AmpachePreferences preferences;
+        private bool ignoreChanges;
 
         public AmpacheSource () : base ("Ampache", "Ampache", 90, "Ampache")
         {
             _trackModel = new MemoryTrackListModel();
             Pixbuf icon = new Pixbuf (System.Reflection.Assembly.GetExecutingAssembly ()
                                       .GetManifestResourceStream ("ampache.png"));
-            Properties.Set<Pixbuf> ("Icon.Pixbuf_22", icon.ScaleSimple (22, 22, InterpType.Bilinear));
+            Properties.Set<Pixbuf> ("Icon.Pixbuf_16", icon.ScaleSimple (16, 16, InterpType.Bilinear));
             ServiceManager.SourceManager.AddSource(this);
             preferences = new AmpachePreferences(this);
-            //InterfaceActionService svc = Get<InterfaceActionService>("InterfaceActionService");
-            //svc.PlaybackActions.ShuffleActions
         }
 
         public override int Count { get { return 0; } }
@@ -73,7 +74,7 @@ namespace Banshee.Ampache
             if (_contents == null)
             {
                 Properties.Set<ISourceContents> ("Nereid.SourceContents", _contents = new AmpacheSourceContents ());
-                _contents.View.NewPlayList += Handle_NewPlayList;
+                _contents.ViewModel.PropertyChanged += Handle_contentsViewModelPropertyChanged;
             }
             base.Activate ();
             ServiceManager.PlaybackController.NextSource = this;
@@ -81,12 +82,18 @@ namespace Banshee.Ampache
             ServiceManager.PlaybackController.ShuffleModeChanged += HandleServiceManagerPlaybackControllerShuffleModeChanged;
         }
 
-        void Handle_NewPlayList (object sender, Hyena.EventArgs<PlayQueue> e)
+        private void Handle_contentsViewModelPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e)
         {
-            _queue = e.Value;
-            ServiceManager.PlayerEngine.Open(_queue.Current);
-            if (ServiceManager.PlaybackController.ShuffleMode != "off") {
-                _queue.Shuffle(new object());
+            if (e.PropertyName == "SelectedSong" && !ignoreChanges && ServiceManager.PlayerEngine.CurrentState != PlayerState.Playing) {
+                var sngs = _contents.ViewModel.Songs.ToList();
+                var skip = sngs.IndexOf(_contents.ViewModel.SelectedSong);
+                _queue = new PlayQueue(sngs.Skip(skip), sngs.Take(skip));
+                Console.WriteLine (_queue.Current.DisplayName);
+                if (ServiceManager.PlaybackController.ShuffleMode != "off") {
+                    _queue.Shuffle(null);
+                }
+                Console.WriteLine (_queue.Current.DisplayName);
+                ServiceManager.PlayerEngine.OpenPlay(_queue.Current);
             }
         }
 
@@ -107,10 +114,6 @@ namespace Banshee.Ampache
         {
             Next(true, true);
         }
-        public override void Deactivate ()
-        {
-            base.Deactivate ();
-        }
 
         #region IBasicPlaybackController implementation
         public bool First ()
@@ -125,9 +128,11 @@ namespace Banshee.Ampache
             }
             var song = _queue.PeekNext();
             if (changeImmediately) {
-                ServiceManager.PlayerEngine.Open(song);
-                _contents.View.SelectPlayingSong(song);
+                ignoreChanges = true;
+                ServiceManager.PlayerEngine.OpenPlay(song);
                 _queue.Next();
+                _contents.ViewModel.SelectedSong = song;
+                ignoreChanges = true;
             }
             return true;
         }
@@ -137,28 +142,17 @@ namespace Banshee.Ampache
             if (_queue == null) {
                 return false;
             }
+            ignoreChanges = true;
             var song = _queue.Previous();
             ServiceManager.PlayerEngine.Open(song);
-            _contents.View.SelectPlayingSong(song);
+            ignoreChanges = false;
             return true;
         }
         #endregion
 
         #region ITrackModelSource implementation
         public void Reload ()
-        {
-            //throw new NotImplementedException ();
-        }
-
-        public void RemoveSelectedTracks ()
-        {
-            //throw new NotImplementedException ();
-        }
-
-        public void DeleteSelectedTracks ()
-        {
-            //throw new NotImplementedException ();
-        }
+        {}
 
         public TrackListModel TrackModel { get { return _trackModel; } }
 
@@ -179,6 +173,14 @@ namespace Banshee.Ampache
         public bool ShowBrowser { get { return false; } }
 
         public bool Indexable { get { return false; } }
+
+        public void RemoveTracks (Hyena.Collections.Selection selection)
+        {
+        }
+
+        public void DeleteTracks (Hyena.Collections.Selection selection)
+        {
+        }
         #endregion
 
         #region Schema Entries
@@ -201,6 +203,7 @@ namespace Banshee.Ampache
         #region IDisposable implementation
         public void Dispose ()
         {
+           // AmpacheSelectionFactory.TearDown();
             this.preferences.Dispose();
         }
         #endregion
diff --git a/src/Ampache/Banshee.Ampache/AmpacheSourceContents.cs b/src/Ampache/Banshee.Ampache/AmpacheSourceContents.cs
index 3202940..ed7e310 100755
--- a/src/Ampache/Banshee.Ampache/AmpacheSourceContents.cs
+++ b/src/Ampache/Banshee.Ampache/AmpacheSourceContents.cs
@@ -40,10 +40,12 @@ namespace Banshee.Ampache
     internal class AmpacheSourceContents : ISourceContents
     {
         public AmpacheView View { get; private set; }
+        public AmpacheViewModel ViewModel {get; private set; }
 
         public AmpacheSourceContents ()
         {
-            View =  new AmpacheView();
+            ViewModel = new AmpacheViewModel();
+            View =  new AmpacheView(ViewModel);
         }
 
         public bool SetSource (ISource source) { return true; }
diff --git a/src/Ampache/Banshee.Ampache/Entities/AmpacheAlbum.cs b/src/Ampache/Banshee.Ampache/Entities/AmpacheAlbum.cs
index ae8bcc9..dd9de18 100755
--- a/src/Ampache/Banshee.Ampache/Entities/AmpacheAlbum.cs
+++ b/src/Ampache/Banshee.Ampache/Entities/AmpacheAlbum.cs
@@ -36,6 +36,7 @@ namespace Banshee.Ampache
         public int Year { get; set; }
         public string ArtUrl { get; set; }
         public override DateTime ReleaseDate { get { return new DateTime(Year, 1,1); } set { base.ReleaseDate = value; } }
+        public string DisplayName { get { return this.DisplayTitle; } }
 
         #region IRatable implementation
 
diff --git a/src/Ampache/Banshee.Ampache/Entities/Tag.cs b/src/Ampache/Banshee.Ampache/Entities/AmpachePlaylist.cs
similarity index 83%
copy from src/Ampache/Banshee.Ampache/Entities/Tag.cs
copy to src/Ampache/Banshee.Ampache/Entities/AmpachePlaylist.cs
index f177d48..dfa74d9 100755
--- a/src/Ampache/Banshee.Ampache/Entities/Tag.cs
+++ b/src/Ampache/Banshee.Ampache/Entities/AmpachePlaylist.cs
@@ -1,21 +1,21 @@
-//
-// Tag.cs
-//
+// 
+// AmpacheSong.cs
+// 
 // Author:
-//       John Moore <jcwmoore at gmail.com>
-//
+//   John Moore <jcwmoore at gmail.com>
+// 
 // Copyright (c) 2010 John Moore
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -26,15 +26,21 @@
 
 using System;
 using System.Collections.Generic;
-
+using Banshee.Collection;
 namespace Banshee.Ampache
 {
-    public class Tag : IEntity
+    public class AmpachePlaylist : IEntity
     {
+        public string Name { get; set; }
+
+        public string DisplayName { get { return Name; } }
+
+        public IList<AmpacheSong> Songs { get; set; }
+
         #region IEntity implementation
+
         public int Id { get; set; }
+
         #endregion
-        public int Count { get; set; }
-        public string Name { get; set; }
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/Entities/AmpacheSong.cs b/src/Ampache/Banshee.Ampache/Entities/AmpacheSong.cs
index bf7d7cb..b98e04e 100755
--- a/src/Ampache/Banshee.Ampache/Entities/AmpacheSong.cs
+++ b/src/Ampache/Banshee.Ampache/Entities/AmpacheSong.cs
@@ -36,6 +36,7 @@ namespace Banshee.Ampache
         public int ArtistId { get; set; }
         public int AlbumId { get; set; }
         public string ArtUrl { get; set; }
+        public string DisplayName {get { return this.TrackTitle; } }
 
         #region IRatable implementation
 
@@ -51,16 +52,4 @@ namespace Banshee.Ampache
 
         #endregion
     }
-    public class AmpachePlaylist : IEntity
-    {
-        public string Name { get; set; }
-
-        public IList<AmpacheSong> Songs { get; set; }
-
-        #region IEntity implementation
-
-        public int Id { get; set; }
-
-        #endregion
-    }
 }
diff --git a/src/Ampache/Banshee.Ampache/Entities/Handshake.cs b/src/Ampache/Banshee.Ampache/Entities/Handshake.cs
index 7cbd10e..2f76653 100755
--- a/src/Ampache/Banshee.Ampache/Entities/Handshake.cs
+++ b/src/Ampache/Banshee.Ampache/Entities/Handshake.cs
@@ -33,5 +33,8 @@ namespace Banshee.Ampache
         public string Server { get; protected set; }
         public string Passphrase { get; protected set; }
         public string User { get; protected set; }
+        public int SongCount { get; protected set; }
+        public int AlbumCount { get; protected set; }
+        public int ArtistCount { get; protected set; }
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/Gui/AmpacheView.cs b/src/Ampache/Banshee.Ampache/Gui/AmpacheView.cs
old mode 100755
new mode 100644
index bb9454e..cc412e5
--- a/src/Ampache/Banshee.Ampache/Gui/AmpacheView.cs
+++ b/src/Ampache/Banshee.Ampache/Gui/AmpacheView.cs
@@ -38,187 +38,240 @@ using Banshee.MediaEngine;
 using Banshee.Collection;
 using Banshee.ServiceStack;
 using Banshee.PlaybackController;
+using Hyena.Data.Gui;
+using Hyena.Data;
 
 namespace Banshee.Ampache
 {
-    [System.ComponentModel.ToolboxItem(true)]
-    public partial class AmpacheView : Gtk.Bin
+    public class AmpacheView : Gtk.VBox
     {
-        bool _connected;
-        private readonly NodeStore _artistStore;
-        private readonly NodeStore _albumStore;
-        private readonly NodeStore _songStore;
-        private readonly NodeStore _playlistStore;
-        private Dictionary<int, AmpacheArtist> _artists = new Dictionary<int, AmpacheArtist>();
-        private Dictionary<int, AmpacheAlbum> _albums = new Dictionary<int, AmpacheAlbum>();
-        private Dictionary<int, AmpacheSong> _songs = new Dictionary<int, AmpacheSong>();
-        private Dictionary<int, AmpachePlaylist> _playlists = new Dictionary<int, AmpachePlaylist>();
+        private readonly ScrolledWindow trackWindow = new ScrolledWindow();
+        private readonly ListView<AmpacheSong> lvTracks = new ListView<AmpacheSong>();
+        private readonly ScrolledWindow artistsWindow = new ScrolledWindow();
+        private readonly ListView<AmpacheArtist> lvArtists = new ListView<AmpacheArtist>();
+        private readonly ScrolledWindow albumWindow = new ScrolledWindow();
+        private readonly ListView<AmpacheAlbum> lvAlbums = new ListView<AmpacheAlbum>();
+        private readonly ScrolledWindow playlistWindow = new ScrolledWindow();
+        private readonly ListView<AmpachePlaylist> lvPlaylists = new ListView<AmpachePlaylist>();
+        private readonly HBox filterBox = new HBox();
+        private readonly Button btnConnect = new Button();
+        private readonly MemoryListModel<AmpacheSong> trackModel = new MemoryListModel<AmpacheSong>();
+        private readonly MemoryListModel<AmpacheArtist> artistModel = new MemoryListModel<AmpacheArtist>();
+        private readonly MemoryListModel<AmpacheAlbum> albumModel = new MemoryListModel<AmpacheAlbum>();
+        private readonly MemoryListModel<AmpachePlaylist> playlistModel = new MemoryListModel<AmpachePlaylist>();
+        private readonly AmpacheViewModel viewModel;
+        private bool ignoreChanges = false;
+
         internal event EventHandler<Hyena.EventArgs<PlayQueue>> NewPlayList;
 
-        // Short alias for the translations
         private static string _(string s)
         {
             return Mono.Addins.AddinManager.CurrentLocalizer.GetString (s);
         }
+        public AmpacheView (AmpacheViewModel vm)
+        {
+            viewModel = vm;
+            vm.PropertyChanged += HandleVmPropertyChanged;
+            btnConnect.Label = _("Connect");
+            PackStart(btnConnect, false, false, 1);
+            artistsWindow.Add(lvArtists);
+            filterBox.PackStart(artistsWindow, true, true, 1);
+            albumWindow.Add(lvAlbums);
+            filterBox.PackStart(albumWindow, true, true, 1);
+            playlistWindow.Add(lvPlaylists);
+            filterBox.PackStart(playlistWindow, true, true, 1);
+            PackStart(filterBox, true, true, 1);
+            trackWindow.Add(lvTracks);
+            PackStart(trackWindow, true, true, 1);
+
+            lvArtists.ColumnController = BuildDisplayColumnController(_("Artist"));
+            lvArtists.SetModel(artistModel);
+            lvAlbums.ColumnController = BuildDisplayColumnController(_("Album"));
+            lvAlbums.SetModel(albumModel);
+            lvPlaylists.ColumnController = BuildDisplayColumnController(_("Playlist"));
+            lvPlaylists.SetModel(playlistModel);
+            lvTracks.ColumnController = BuildDisplayColumnController(_("Title"));
+            lvTracks.ColumnController.Add(new Column(new ColumnDescription("DisplayArtistName", _("Artist"), 100)));
+            lvTracks.ColumnController.Add(new Column(new ColumnDescription("DisplayAlbumTitle", _("Album"), 100)));
+            lvTracks.SetModel(trackModel);
+            ShowAll();
+
+            lvArtists.Model.Selection.Changed += HandleLvArtistsModelSelectionChanged;
+            lvAlbums.Model.Selection.Changed += HandleLvAlbumsModelSelectionChanged;
+            lvPlaylists.Model.Selection.Changed += HandleLvPlaylistsModelSelectionChanged;
+            lvTracks.Model.Selection.Changed += HandleLvTracksModelSelectionChanged;
 
-        public AmpacheView ()
-        {
-            this.Build ();
-            _artistStore = new NodeStore(typeof(ArtistLabel));
-            ndvArtists.NodeStore = _artistStore;
-            ndvArtists.AppendColumn(_("Name"), new CellRendererText(), "text", 0);
-            ndvArtists.NodeSelection.Changed += HandleNdvArtistsNodeSelectionChanged;
-            _albumStore = new NodeStore(typeof(AlbumLabel));
-            ndvAlbums.NodeStore = _albumStore;
-            ndvAlbums.AppendColumn(_("Name"), new CellRendererText(), "text", 0);
-            ndvAlbums.NodeSelection.Changed += HandleNdvAlbumsNodeSelectionChanged;
-            _songStore = new NodeStore(typeof(SongLabel));
-            ndvSongs.NodeStore = _songStore;
-            ndvSongs.AppendColumn(_("Name"), new CellRendererText(), "text", 0);
-            ndvSongs.AppendColumn(_("Artist"), new CellRendererText(), "text", 1);
-            ndvSongs.AppendColumn(_("Album"), new CellRendererText(), "text", 2);
-            ndvSongs.NodeSelection.Changed += HandleNdvSongsNodeSelectionChanged;
-            _playlistStore = new NodeStore(typeof(PlaylistLabel));
-            ndvPlaylists.AppendColumn(_("Name "), new CellRendererText(), "text", 0);
-            ndvPlaylists.NodeStore = _playlistStore;
-            ndvPlaylists.NodeSelection.Changed += HandleNdvPlaylistsNodeSelectionChanged;
             if (!string.IsNullOrEmpty(AmpacheSource.UserName.Get())) {
-                lblConfigure.Hide();
-                System.Threading.ThreadPool.QueueUserWorkItem(LoadAmpache);
-                _artistStore.AddNode(new ArtistLabel{Name = _("Loading...")});
-                _albumStore.AddNode(new AlbumLabel{Name = _("Loading...")});
-                _playlistStore.AddNode(new PlaylistLabel{Name = _("Loading...")});
                 btnConnect.Hide();
+                System.Threading.ThreadPool.QueueUserWorkItem((o)=> viewModel.ConnectCommand() );
             }
         }
 
-        void HandleNdvPlaylistsNodeSelectionChanged(object sender, EventArgs e)
+        void HandleVmPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e)
         {
-            var sel = sender as Gtk.NodeSelection;
-            if (sel == null || sel.SelectedNode == null) {
+            if (ignoreChanges) {
                 return;
             }
-            var ply = (PlaylistLabel)sel.SelectedNode;
-            ndvAlbums.NodeSelection.UnselectAll();
-            ndvArtists.NodeSelection.UnselectAll();
-            _songStore.Clear();
-            _playlists[ply.AmpacheId].Songs.ToList().ForEach(s=>_songStore.AddNode(new SongLabel(s)));
+            switch (e.PropertyName) {
+            case "Artists":
+                Gtk.Application.Invoke(RefreshArtists);
+                break;
+            case "Albums":
+                Gtk.Application.Invoke(RefreshAlbums);
+                break;
+            case "Playlists":
+                Gtk.Application.Invoke(RefreshPlaylists);
+                break;
+            case "Songs":
+                Gtk.Application.Invoke(RefreshTracks);
+                break;
+            case "SelectedSong":
+                Gtk.Application.Invoke(SelectPlayingSong);
+                break;
+            case "SelectedArtist":
+                Gtk.Application.Invoke(SelectArtist);
+                break;
+            case "SelectedAlbum":
+                Gtk.Application.Invoke(SelectAlbum);
+                break;
+            default:
+                break;
+            }
         }
 
-        private void HandleNdvAlbumsNodeSelectionChanged (object sender, EventArgs e)
+        void HandleLvTracksModelSelectionChanged (object sender, EventArgs e)
         {
-            var sel = sender as Gtk.NodeSelection;
-            if (sel == null || sel.SelectedNode == null) {
-                return;
+            var sng = trackModel.SelectedItems.FirstOrDefault();
+            if (sng != null) {
+                ignoreChanges = true;
+                viewModel.SelectedSong = sng;
+                ignoreChanges = false;
             }
-            var alb = (AlbumLabel)sel.SelectedNode;
-            _songStore.Clear();
-            _songs.Values.Where(a=>a.AlbumId == alb.AmpacheId).ToList().ForEach(s=>_songStore.AddNode(new SongLabel(s)));
-            ndvPlaylists.NodeSelection.UnselectAll();
         }
 
-        private void HandleNdvSongsNodeSelectionChanged (object sender, EventArgs e)
+        void HandleLvPlaylistsModelSelectionChanged (object sender, EventArgs e)
         {
-            var sel = sender as Gtk.NodeSelection;
-            if (sel == null || sel.SelectedNode == null || ServiceManager.PlayerEngine.CurrentState == PlayerState.Playing) {
+            if (playlistModel.SelectedItems.Count != 1) {
+                viewModel.SelectedPlaylist = null;
                 return;
             }
-            var lbls = _songStore.Cast<SongLabel>().ToList();
-            var songs = lbls.Select(l => _songs[l.AmpacheId]).ToList();
-            var skip = lbls.IndexOf((SongLabel)sel.SelectedNode);
-            var tmp = new PlayQueue(songs.Skip(skip), songs.Take(skip));
-            if (NewPlayList != null) {
-                NewPlayList(this, new Hyena.EventArgs<PlayQueue>(tmp));
-            }
+            ignoreChanges = true;
+            viewModel.SelectedPlaylist = playlistModel.SelectedItems.First();
+            ignoreChanges = false;
+            viewModel.SelectedAlbum = null;
+            viewModel.SelectedArtist = null;
+            System.Threading.ThreadPool.QueueUserWorkItem((o) => viewModel.LoadSongsCommand());
         }
 
-        //todo: change to event
-        internal void SelectPlayingSong(TrackInfo song)
+        void HandleLvAlbumsModelSelectionChanged (object sender, EventArgs e)
         {
-            var tmp = _songStore.Cast<SongLabel>().FirstOrDefault(s=>s.Url == song.Uri.AbsoluteUri);
-            if(tmp != null) {
-                ndvSongs.NodeSelection.Changed -= HandleNdvSongsNodeSelectionChanged;
-                ndvSongs.NodeSelection.SelectNode(tmp);
-                ndvSongs.NodeSelection.Changed += HandleNdvSongsNodeSelectionChanged;
+            if (albumModel.SelectedItems.Count != 1) {
+                viewModel.SelectedAlbum = null;
+                return;
             }
+            ignoreChanges = true;
+            viewModel.SelectedAlbum = albumModel.SelectedItems.First();
+            ignoreChanges = false;
+            viewModel.SelectedArtist = viewModel.Artists.FirstOrDefault(a => a.Id == viewModel.SelectedAlbum.ArtistId);
+            System.Threading.ThreadPool.QueueUserWorkItem((o) => viewModel.LoadSongsCommand());
         }
 
-        private void HandleNdvArtistsNodeSelectionChanged (object sender, EventArgs e)
+        private void HandleLvArtistsModelSelectionChanged (object sender, EventArgs e)
         {
-            var sel = sender as Gtk.NodeSelection;
-            if (sel == null || sel.SelectedNode == null) {
+            if (artistModel.SelectedItems.Count != 1) {
+                viewModel.SelectedArtist = null;
                 return;
             }
-            var art = (ArtistLabel)sel.SelectedNode;
-            _albumStore.Clear();
-            _albums.Values.Where(a=>a.ArtistId == art.ArtistId).ToList().ForEach(a=>_albumStore.AddNode(new AlbumLabel{AmpacheId = a.Id, ArtistId = a.ArtistId, Name = a.DisplayTitle}));
-            _songStore.Clear();
-            _songs.Values.Where(a=>a.ArtistId == art.ArtistId).ToList().ForEach(s=>_songStore.AddNode(new SongLabel(s)));
-            ndvPlaylists.NodeSelection.UnselectAll();
+            ignoreChanges = true;
+            playlistModel.Selection.Clear();
+            viewModel.SelectedArtist = artistModel.SelectedItems.First();
+            if (viewModel.SelectedAlbum != null && viewModel.SelectedAlbum.ArtistId != viewModel.SelectedArtist.Id){
+                albumModel.Selection.Clear();
+            }
+            ignoreChanges = false;
+            System.Threading.ThreadPool.QueueUserWorkItem((o) => viewModel.LoadSongsCommand());
+        }
+        
+        private ColumnController BuildDisplayColumnController(string localizedTitle)
+        {
+            var result = new ColumnController();
+            result.Add(new Column(new ColumnDescription("DisplayName", localizedTitle, 100)));
+            return result;
         }
 
-        protected virtual void btnConnect_OnClicked (object sender, System.EventArgs e)
+        #region Populate Methods
+
+        private void RefreshArtists(object sender, EventArgs e)
         {
-            if (!_connected) {
-                System.Threading.ThreadPool.QueueUserWorkItem(LoadAmpache);
-                _artistStore.AddNode(new ArtistLabel{Name = _("Loading...")});
-                _albumStore.AddNode(new AlbumLabel{Name = _("Loading...")});
-                _playlistStore.AddNode(new PlaylistLabel{Name = _("Loading...")});
-                btnConnect.Hide();
-            }
+            artistModel.Clear();
+            viewModel.Artists.ToList().ForEach(a=>artistModel.Add(a));
+            artistModel.Reload();
+        }
+
+        private void RefreshAlbums(object sender, EventArgs e)
+        {
+            albumModel.Clear();
+            viewModel.Albums.ToList().ForEach(a=>albumModel.Add(a));
+            albumModel.Reload();
         }
-        // todo: this does not belong in the UI class
-        private void LoadAmpache(object ob)
-        {
-            if(!_connected) {
-                try {
-                    var tmp = new Authenticate(AmpacheSource.AmpacheRootAddress.Get(), AmpacheSource.UserName.Get(), AmpacheSource.UserPassword.Get());
-                    AmpacheSelectionFactory.Initialize(tmp);
-                    _artists = AmpacheSelectionFactory.GetSelectorFor<AmpacheArtist>().SelectAll().ToDictionary(k=>k.Id, v=>v);
-                    _albums = AmpacheSelectionFactory.GetSelectorFor<AmpacheAlbum>().SelectAll().ToDictionary(k=>k.Id, v=>v);
-                    _songs = AmpacheSelectionFactory.GetSelectorFor<AmpacheSong>().SelectAll().ToDictionary(k=>k.Id, v=>v);
-                    _playlists = AmpacheSelectionFactory.GetSelectorFor<AmpachePlaylist>().SelectAll().ToDictionary(k=>k.Id, v=>v);
-                    _connected = true;
-                    // hydrate albums and songs
-                    foreach (var alb in _albums.Values) {
-                        if (_artists.ContainsKey(alb.ArtistId)) {
-                            alb.Hydrate(_artists[alb.ArtistId]);
-                        }
-                    }
-                    foreach (AmpacheSong song in _songs.Values.Union(_playlists.Values.SelectMany(p => p.Songs))) {
-                        if (_albums.ContainsKey(song.AlbumId)) {
-                            song.Hydrate(_albums[song.AlbumId], _artists[song.ArtistId]);
-                        }
-                    }
-
-                }
-                catch (Exception e) {
-                    Hyena.Log.Error(e.Message);
-                    _connected = false;
-                }
-                Gtk.Application.Invoke((o,e) => LoadNodeLists());
+
+        private void RefreshPlaylists(object sender, EventArgs e)
+        {
+            playlistModel.Clear();
+            viewModel.Playlists.ToList().ForEach(a=>playlistModel.Add(a));
+            playlistModel.Reload();
+        }
+
+        private void RefreshTracks(object sender, EventArgs e)
+        {
+            trackModel.Clear();
+            viewModel.Songs.ToList().ForEach(a=>trackModel.Add(a));
+            trackModel.Reload();
+        }
+
+        private void SelectPlayingSong(object sender, EventArgs e)
+        {
+            var index = trackModel.IndexOf(viewModel.SelectedSong);
+            if(index > 0) {
+                trackModel.Selection.Changed -= HandleLvTracksModelSelectionChanged;
+                trackModel.Selection.Clear();
+                trackModel.Selection.Select(index);
+                lvTracks.ScrollTo(index);
+                trackModel.Selection.Changed += HandleLvTracksModelSelectionChanged;
             }
         }
 
-        private void LoadNodeLists()
+        private void SelectArtist(object sender, EventArgs e)
         {
-            if (_connected)
-            {
-                LoginArea.Hide();
+            var index = artistModel.IndexOf(viewModel.SelectedArtist);
+            artistModel.Selection.Changed -= HandleLvArtistsModelSelectionChanged;
+            artistModel.Selection.Clear();
+            artistModel.Selection.Changed += HandleLvArtistsModelSelectionChanged;
+            if (index > 0) {
+                artistModel.Selection.Select(index);
+                lvArtists.ScrollTo(index);
             }
-            else
-            {
-                btnConnect.Show();
+        }
+
+        private void SelectAlbum(object sender, EventArgs e)
+        {
+            var index = albumModel.IndexOf(viewModel.SelectedAlbum);
+            albumModel.Selection.Clear(false);
+            if (index > 0) {
+                albumModel.Selection.Select(index);
+                lvAlbums.ScrollTo(index);
             }
+        }
 
-            _artistStore.Clear();
-            _artists.Values.ToList().ForEach(a => _artistStore.AddNode(new ArtistLabel{ArtistId = a.Id, Name = a.Name}));
-            _albumStore.Clear();
-            _albums.Values.ToList().ForEach(a =>_albumStore.AddNode(new AlbumLabel{AmpacheId = a.Id, ArtistId = a.ArtistId, Name = a.DisplayTitle}));
-            _songStore.Clear();
-            _songs.Values.ToList().ForEach(s =>_songStore.AddNode(new SongLabel(s)));
-            _playlistStore.Clear();
-            _playlists.Values.ToList().ForEach(p => _playlistStore.AddNode(new PlaylistLabel(p)));
+        #endregion
+    }
+    public static class IListModelExtensions
+    {
+        public static IEnumerable<T> AsEnumerable<T>(this IListModel<T> model)
+        {
+            for (int i = 0; i < model.Count; i++) {
+                yield return model[i];
+            }
         }
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/Gui/PreferenceView.cs b/src/Ampache/Banshee.Ampache/Gui/PreferenceView.cs
old mode 100644
new mode 100755
diff --git a/src/Ampache/Banshee.Ampache/IO/AmpacheSelectionFactory.cs b/src/Ampache/Banshee.Ampache/IO/AmpacheSelectionFactory.cs
index 12ab881..f92b2cd 100755
--- a/src/Ampache/Banshee.Ampache/IO/AmpacheSelectionFactory.cs
+++ b/src/Ampache/Banshee.Ampache/IO/AmpacheSelectionFactory.cs
@@ -29,46 +29,30 @@ using System.Threading;
 
 namespace Banshee.Ampache
 {
-    public static class AmpacheSelectionFactory
+    public class AmpacheSelectionFactory
     {
-        private static Authenticate _handshake;
-        // TODO: move the ping time to the source class (IDisposable)
-        private static Timer _pingTimer;
+        private readonly Handshake handshake;
 
-        public static void Initialize(Authenticate handshake)
+        public AmpacheSelectionFactory (Handshake hs)
         {
-            _handshake = handshake;
-            _pingTimer = new Timer((o) => handshake.Ping(), null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
+            handshake = hs;
         }
 
-        public static IAmpacheSelector<TEntity> GetSelectorFor<TEntity>() where TEntity : IEntity
+        public IAmpacheSelector<TEntity> GetInstanceSelectorFor<TEntity>() where TEntity : IEntity
         {
             if (typeof(TEntity) == typeof(AmpacheArtist)) {
-                return new ArtistSelector(_handshake, new ArtistFactory()) as IAmpacheSelector<TEntity>;
+                return new ArtistSelector(handshake, new ArtistFactory()) as IAmpacheSelector<TEntity>;
             }
             if (typeof(TEntity) == typeof(AmpacheAlbum)) {
-                return new AlbumSelector(_handshake, new AlbumFactory()) as IAmpacheSelector<TEntity>;
+                return new AlbumSelector(handshake, new AlbumFactory()) as IAmpacheSelector<TEntity>;
             }
             if (typeof(TEntity) == typeof(AmpacheSong)) {
-                return new SongSelector(_handshake, new SongFactory()) as IAmpacheSelector<TEntity>;
+                return new SongSelector(handshake, new SongFactory()) as IAmpacheSelector<TEntity>;
             }
             if (typeof(TEntity) == typeof(AmpachePlaylist)){
-                return new PlaylistSelector(_handshake, new PlaylistFactory(), new SongFactory()) as IAmpacheSelector<TEntity>;
+                return new PlaylistSelector(handshake, new PlaylistFactory(), new SongFactory()) as IAmpacheSelector<TEntity>;
             }
             throw new InvalidOperationException(string.Format("{0} is not yet supported for selection from ampache", typeof(TEntity).Name));
         }
-
-        public static void TearDown()
-        {
-            if(_handshake != null)
-            {
-                _handshake = null;
-            }
-            if(_pingTimer != null)
-            {
-                _pingTimer.Change(Timeout.Infinite, Timeout.Infinite);
-                _pingTimer = null;
-            }
-        }
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/IO/AmpacheSelectorBase.cs b/src/Ampache/Banshee.Ampache/IO/AmpacheSelectorBase.cs
index 2c4ed5b..3030eac 100755
--- a/src/Ampache/Banshee.Ampache/IO/AmpacheSelectorBase.cs
+++ b/src/Ampache/Banshee.Ampache/IO/AmpacheSelectorBase.cs
@@ -40,7 +40,7 @@ namespace Banshee.Ampache
         protected const string FILTER_PARAMETER = @"&filter={0}";
         protected const string OFFSET_PARAMETER = @"&offset={0}";
         protected const string LIMIT_PARAMETER = @"&limit={0}";
-
+        private const int LIMIT_AMOUNT = 1000;
         protected readonly Handshake _handshake;
         private readonly IEntityFactory<TEntity> _factory;
         protected abstract string SelectAllMethod { get; }
@@ -55,33 +55,49 @@ namespace Banshee.Ampache
 
         #region IAmpacheSelector[TEntity] implementation
 
-        public virtual ICollection<TEntity> SelectAll ()
+        public virtual IEnumerable<TEntity> SelectAll ()
         {
             StringBuilder builder = new StringBuilder();
             builder.AppendFormat(BASE_URL, _handshake.Server, SelectAllMethod, _handshake.Passphrase);
-            var request = (HttpWebRequest)WebRequest.Create (builder.ToString());
-              var response = request.GetResponse();
-              var result = XElement.Load(new StreamReader(response.GetResponseStream()));
-
-              return _factory.Construct(result.Descendants(XmlNodeName).ToList());
+            builder.AppendFormat(LIMIT_PARAMETER, LIMIT_AMOUNT);
+            var result = Query(builder.ToString());
+            int offset = 0;
+            while (result.Count == LIMIT_AMOUNT) {
+                foreach(var t in result){
+                    yield return t;
+                }
+                offset += LIMIT_AMOUNT;
+                builder = new StringBuilder();
+                builder.AppendFormat(BASE_URL, _handshake.Server, SelectAllMethod, _handshake.Passphrase);
+                builder.AppendFormat(LIMIT_PARAMETER, LIMIT_AMOUNT);
+                builder.AppendFormat(OFFSET_PARAMETER, offset);
+                result = Query(builder.ToString());
+            }
+            foreach(var t in result){
+                yield return t;
+            }
         }
 
-        public virtual ICollection<TEntity> SelectBy<TParameter> (TParameter parameter) where TParameter : IEntity
+        public virtual IEnumerable<TEntity> SelectBy<TParameter> (TParameter parameter) where TParameter : IEntity
         {
             if (!SelectMethodMap.ContainsKey(typeof(TParameter)))
             {
                 return SelectAll();
             }
             StringBuilder builder = new StringBuilder();
-            builder.AppendFormat(BASE_URL, _handshake.Server, SelectAllMethod, _handshake.Passphrase);
-            builder.AppendFormat(FILTER_PARAMETER, SelectMethodMap[typeof(TParameter)]);
-            var request = (HttpWebRequest)WebRequest.Create (builder.ToString());
-              var response = request.GetResponse();
-              var result = XElement.Load(new StreamReader(response.GetResponseStream()));
-
-              return _factory.Construct(result.Descendants(XmlNodeName).ToList());
+            builder.AppendFormat(BASE_URL, _handshake.Server, SelectMethodMap[typeof(TParameter)], _handshake.Passphrase);
+            builder.AppendFormat(FILTER_PARAMETER, parameter.Id);
+            return Query(builder.ToString());
         }
 
         #endregion
+
+        private ICollection<TEntity> Query(string url)
+        {
+            var request = (HttpWebRequest)WebRequest.Create (url);
+            var response = request.GetResponse();
+            var result = XElement.Load(new StreamReader(response.GetResponseStream()));
+            return _factory.Construct(result.Descendants(XmlNodeName).ToList());
+        }
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/IO/Authenticate.cs b/src/Ampache/Banshee.Ampache/IO/Authenticate.cs
index e217ee0..aa54481 100755
--- a/src/Ampache/Banshee.Ampache/IO/Authenticate.cs
+++ b/src/Ampache/Banshee.Ampache/IO/Authenticate.cs
@@ -77,6 +77,9 @@ namespace Banshee.Ampache
             var result = XElement.Load(new StreamReader(response.GetResponseStream()));
             if(result.Descendants("error").Count() == 0 && result.Descendants("auth").FirstOrDefault() != null) {
                 Passphrase = result.Descendants("auth").First().Value;
+                SongCount = int.Parse(result.Descendants("songs").First().Value);
+                ArtistCount = int.Parse(result.Descendants("artists").First().Value);
+                AlbumCount = int.Parse(result.Descendants("albums").First().Value);
                 return true;
             }
             return false;
diff --git a/src/Ampache/Banshee.Ampache/IO/IAmpacheSelector.cs b/src/Ampache/Banshee.Ampache/IO/IAmpacheSelector.cs
index 869b26b..2c36b88 100755
--- a/src/Ampache/Banshee.Ampache/IO/IAmpacheSelector.cs
+++ b/src/Ampache/Banshee.Ampache/IO/IAmpacheSelector.cs
@@ -37,7 +37,7 @@ namespace Banshee.Ampache
         /// <returns>
         /// A complete collection of all <see cref="TEntity"/> that are in the Ampache server
         /// </returns>
-        ICollection<TEntity> SelectAll();
+        IEnumerable<TEntity> SelectAll();
 
         /// <summary>
         /// Queries ampache for all <see cref="TEntity"/> that are associated with the provided <see cref="TParameter"/>,
@@ -50,7 +50,7 @@ namespace Banshee.Ampache
         /// A <see cref="ICollection<TEntity>"/> where all elements are associated the the provided <see cref="TParameter"/>
         /// if Ampache cannot be queried with the provided parameter then <see cref="SelectAll"/> will be used.
         /// </returns>
-        ICollection<TEntity> SelectBy<TParameter>(TParameter parameter) where TParameter : IEntity;
+        IEnumerable<TEntity> SelectBy<TParameter>(TParameter parameter) where TParameter : IEntity;
     }
 
 
diff --git a/src/Ampache/Banshee.Ampache/IO/PlaylistSelector.cs b/src/Ampache/Banshee.Ampache/IO/PlaylistSelector.cs
index d42e2e3..8200e3d 100755
--- a/src/Ampache/Banshee.Ampache/IO/PlaylistSelector.cs
+++ b/src/Ampache/Banshee.Ampache/IO/PlaylistSelector.cs
@@ -56,7 +56,7 @@ namespace Banshee.Ampache
 
         #endregion
 
-        public override ICollection<AmpachePlaylist> SelectAll ()
+        public override IEnumerable<AmpachePlaylist> SelectAll ()
         {
             var results = base.SelectAll ();
             foreach (var playlist in results)
@@ -67,11 +67,9 @@ namespace Banshee.Ampache
                 var request = (HttpWebRequest)WebRequest.Create (builder.ToString());
                 var response = request.GetResponse();
                 var raw = XElement.Load(new StreamReader(response.GetResponseStream()));
-                //Console.WriteLine (raw.ToString());
                 playlist.Songs = _songFactory.Construct(raw.Descendants("song").ToList()).ToList();
+                yield return playlist;
             }
-            return results;
         }
-
     }
 }
diff --git a/src/Ampache/Banshee.Ampache/IO/SongSelector.cs b/src/Ampache/Banshee.Ampache/IO/SongSelector.cs
index 90f01e1..d42e603 100755
--- a/src/Ampache/Banshee.Ampache/IO/SongSelector.cs
+++ b/src/Ampache/Banshee.Ampache/IO/SongSelector.cs
@@ -36,6 +36,7 @@ namespace Banshee.Ampache
         private const string ALBUM_ACTION = @"album_songs";
         private const string ARTIST_ACTION = @"artist_songs";
         private const string TAG_ACTION = @"tag_songs";
+        private const string PLAYLIST_ACTION = @"playlist_songs";
         private static Dictionary<Type, string> MAP;
 
         static SongSelector ()
@@ -44,6 +45,7 @@ namespace Banshee.Ampache
             MAP.Add(typeof(AmpacheAlbum), ALBUM_ACTION);
             MAP.Add(typeof(AmpacheArtist), ARTIST_ACTION);
             MAP.Add(typeof(Tag), TAG_ACTION);
+            MAP.Add(typeof(AmpachePlaylist), PLAYLIST_ACTION);
         }
 
         public SongSelector (Handshake handshake, IEntityFactory<AmpacheSong> factory) : base (handshake, factory)
diff --git a/src/Ampache/Banshee.Ampache/Logic/AmpacheViewModel.cs b/src/Ampache/Banshee.Ampache/Logic/AmpacheViewModel.cs
new file mode 100644
index 0000000..6ed9ede
--- /dev/null
+++ b/src/Ampache/Banshee.Ampache/Logic/AmpacheViewModel.cs
@@ -0,0 +1,326 @@
+// 
+// AmpacheViewModel.cs
+// 
+// Author:
+//   John Moore <jcwmoore at gmail.com>
+// 
+// Copyright (c) 2010 john
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.ComponentModel;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+
+namespace Banshee.Ampache
+{
+    public class AmpacheViewModel : INotifyPropertyChanged, IDisposable
+    {
+        #region Artists
+        
+        private ICollection<AmpacheArtist> artists = new HashSet<AmpacheArtist>();
+        
+        public ICollection<AmpacheArtist> Artists
+        {
+            get { return artists; }
+            set
+            {
+                if (value == artists){
+                    return;
+                }
+                artists = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("Artists"));
+                }
+            }
+        }
+        
+        #endregion
+
+        #region SelectedArtist
+
+        private AmpacheArtist selectedArtist = null;
+
+        public AmpacheArtist SelectedArtist
+        {
+            get { return selectedArtist; }
+            set
+            {
+                if (value == selectedArtist){
+                    return;
+                }
+                selectedArtist = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("SelectedArtist"));
+                }
+            }
+        }
+        
+        #endregion
+
+        #region Albums
+
+        private ICollection<AmpacheAlbum> albums = new HashSet<AmpacheAlbum>();
+
+        public ICollection<AmpacheAlbum> Albums
+        {
+            get { return albums; }
+            set
+            {
+                if (value == albums){
+                    return;
+                }
+                albums = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("Albums"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region SelectedAlbum
+
+        private AmpacheAlbum selectedAlbum = null;
+
+        public AmpacheAlbum SelectedAlbum
+        {
+            get { return selectedAlbum; }
+            set
+            {
+                if (value == selectedAlbum){
+                    return;
+                }
+                selectedAlbum = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("SelectedAlbum"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region Playlists
+
+        private ICollection<AmpachePlaylist> playlists = new HashSet<AmpachePlaylist>();
+
+        public ICollection<AmpachePlaylist> Playlists
+        {
+            get { return playlists; }
+            set
+            {
+                if (value == playlists){
+                    return;
+                }
+                playlists = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("Playlists"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region SelectedPlaylist
+
+        private AmpachePlaylist selectedplaylist = null;
+
+        public AmpachePlaylist SelectedPlaylist
+        {
+            get { return selectedplaylist; }
+            set
+            {
+                if (value == selectedplaylist){
+                    return;
+                }
+                selectedplaylist = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("Selectedplaylist"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region Songs
+
+        private ICollection<AmpacheSong> songs = new HashSet<AmpacheSong>();
+
+        public ICollection<AmpacheSong> Songs
+        {
+            get { return songs; }
+            set
+            {
+                if (value == songs){
+                    return;
+                }
+                songs = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("Songs"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region SelectedSong
+
+        private AmpacheSong selectedSong = null;
+
+        public AmpacheSong SelectedSong
+        {
+            get { return selectedSong; }
+            set
+            {
+                if (value == selectedSong){
+                    return;
+                }
+                selectedSong = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("SelectedSong"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region IsConnected
+
+        private bool isConnected = false;
+
+        public bool IsConnected
+        {
+            get { return isConnected; }
+            set
+            {
+                if (value == isConnected){
+                    return;
+                }
+                isConnected = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("IsConnected"));
+                }
+            }
+        }
+
+        #endregion
+
+        #region IsLoading
+
+        private bool isLoading = false;
+
+        public bool IsLoading
+        {
+            get { return isLoading; }
+            set
+            {
+                if (value == isLoading){
+                    return;
+                }
+                isLoading = value;
+                if(PropertyChanged != null){
+                    PropertyChanged(this, new PropertyChangedEventArgs("IsLoading"));
+                }
+            }
+        }
+
+        #endregion
+
+        public Action LoadSongsCommand { get; private set; }
+        public Action ConnectCommand { get; private set; }
+
+        private Timer pingTimer;
+        private AmpacheSelectionFactory factory;
+
+        public AmpacheViewModel ()
+        {
+            ConnectCommand = LoadAmpache;
+            LoadSongsCommand = LoadSongs;
+        }
+
+        private void LoadAmpache()
+        {
+            if(!IsConnected) {
+                try {
+                    IsLoading = true;
+                    var tmp = new Authenticate(AmpacheSource.AmpacheRootAddress.Get(), AmpacheSource.UserName.Get(), AmpacheSource.UserPassword.Get());
+                    factory = new AmpacheSelectionFactory(tmp);
+                    pingTimer = new System.Threading.Timer((o) => tmp.Ping(), null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
+                    Artists = factory.GetInstanceSelectorFor<AmpacheArtist>().SelectAll().ToList();
+                    Albums = factory.GetInstanceSelectorFor<AmpacheAlbum>().SelectAll().ToList();
+                    Playlists = factory.GetInstanceSelectorFor<AmpachePlaylist>().SelectAll().ToList();
+                    IsConnected = true;
+                    // hydrate albums
+                    var artists = Artists.ToDictionary(k=>k.Id, v=>v);
+                    foreach (var alb in Albums) {
+                        if (artists.ContainsKey(alb.ArtistId)) {
+                            alb.Hydrate(artists[alb.ArtistId]);
+                        }
+                    }
+                }
+                catch (Exception e) {
+                    Hyena.Log.ErrorFormat("{0}: message {1}\n{2}", e.GetType().Name, e.Message, e.StackTrace);
+                    IsConnected = false;
+                }
+                IsLoading = false;
+            }
+        }
+
+        private void LoadSongs()
+        {
+            var sel = factory.GetInstanceSelectorFor<AmpacheSong>();
+            IEnumerable<AmpacheSong> songs = Enumerable.Empty<AmpacheSong>();
+            if (SelectedPlaylist != null) {
+                songs = sel.SelectBy(SelectedPlaylist);
+            }
+            else if (SelectedAlbum != null) {
+                songs = sel.SelectBy(SelectedAlbum);
+            }
+            else if (SelectedArtist != null) {
+                songs = sel.SelectBy(SelectedArtist);
+            }
+            var artists = Artists.ToDictionary(k=>k.Id, v=>v);
+            var albums = Albums.ToDictionary(k=>k.Id, v=>v);
+            foreach (AmpacheSong item in songs) {
+                item.Hydrate(albums[item.AlbumId], artists[item.ArtistId]);
+            }
+            Songs = new HashSet<AmpacheSong>(songs);
+        }
+
+        #region INotifyPropertyChanged implementation
+        public event PropertyChangedEventHandler PropertyChanged;
+        #endregion
+
+        #region IDisposable implementation
+        public void Dispose ()
+        {
+            if (pingTimer != null) {
+                pingTimer.Change(Timeout.Infinite, Timeout.Infinite);
+                pingTimer.Dispose();
+                pingTimer = null;
+            }
+            factory = null;
+            IsConnected = false;
+        }
+        #endregion
+    }
+}
+
diff --git a/src/Ampache/Banshee.Ampache/Logic/PlayQueue.cs b/src/Ampache/Banshee.Ampache/Logic/PlayQueue.cs
index 10a5ebf..9223d30 100755
--- a/src/Ampache/Banshee.Ampache/Logic/PlayQueue.cs
+++ b/src/Ampache/Banshee.Ampache/Logic/PlayQueue.cs
@@ -35,45 +35,45 @@ namespace Banshee.Ampache
 {
     internal class PlayQueue
     {
-        private IList<TrackInfo> _playList;
-        private readonly IList<TrackInfo> _original;
+        private IList<AmpacheSong> _playList;
+        private readonly IList<AmpacheSong> _original;
         private int _playing;
 
-        private readonly TrackInfo _first;
+        private readonly AmpacheSong _first;
 
         public PlayQueue (IEnumerable<AmpacheSong> songs) : this (songs, Enumerable.Empty<AmpacheSong>())
         {}
 
         public PlayQueue (IEnumerable<AmpacheSong> nexts, IEnumerable<AmpacheSong> prevs)
         {
-            var tmp = prevs.Cast<TrackInfo>().ToList();
+            var tmp = prevs.ToList();
             _playing = tmp.Count;
-            tmp.AddRange(nexts.Cast<TrackInfo>());
+            tmp.AddRange(nexts);
             _playList = tmp;
             _first = _playList[SafePlaying];
-            _original = new List<TrackInfo>(tmp).AsReadOnly();
+            _original = tmp.AsReadOnly();
         }
 
-        public TrackInfo Current { get { return _playList[SafePlaying]; } }
+        public AmpacheSong Current { get { return _playList[SafePlaying]; } }
         private int SafePlaying { get { return _playing % _playList.Count; } }
-        public TrackInfo First { get { return _first; } }
-        public TrackInfo PeekNext()
+        public AmpacheSong First { get { return _first; } }
+        public AmpacheSong PeekNext()
         {
             return _playList[(_playing + 1) % _playList.Count];
         }
-        public TrackInfo Next()
+        public AmpacheSong Next()
         {
             _playing ++;
             return _playList[SafePlaying];
         }
-        public TrackInfo PeekPrevious()
+        public AmpacheSong PeekPrevious()
         {
             if (_playing != 0) {
                 return _playList[SafePlaying - 1];
             }
             return _playList.Last();
         }
-        public TrackInfo Previous()
+        public AmpacheSong Previous()
         {
             if (_playing == 0) {
                 _playing = _playList.Count;
@@ -86,7 +86,7 @@ namespace Banshee.Ampache
             var tmp = Current;
             var old = _playList;
             old.Remove(tmp);
-            _playList = new List<TrackInfo>();
+            _playList = new List<AmpacheSong>();
             _playList.Add(tmp);
             Random rand = new Random();
             while (old.Count != 0) {
@@ -94,6 +94,7 @@ namespace Banshee.Ampache
                 old.Remove(tmp);
                 _playList.Add(tmp);
             }
+            _playing = 0;
         }
         public void Unshuffle(object o)
         {
diff --git a/src/Ampache/Makefile.am b/src/Ampache/Makefile.am
old mode 100644
new mode 100755
index 190481b..3cc6c66
--- a/src/Ampache/Makefile.am
+++ b/src/Ampache/Makefile.am
@@ -7,6 +7,7 @@ SOURCES =  \
 	Banshee.Ampache/AmpacheSourceContents.cs \
 	Banshee.Ampache/Entities/AmpacheAlbum.cs \
 	Banshee.Ampache/Entities/AmpacheArtist.cs \
+	Banshee.Ampache/Entities/AmpachePlaylist.cs \
 	Banshee.Ampache/Entities/AmpacheSong.cs \
 	Banshee.Ampache/Entities/Handshake.cs \
 	Banshee.Ampache/Entities/IEntity.cs \
@@ -37,8 +38,8 @@ SOURCES =  \
 	Banshee.Ampache/IO/SongSelector.cs \
 	Banshee.Ampache/Logic/AmpacheAlbumExtensions.cs \
 	Banshee.Ampache/Logic/AmpacheSongExtensions.cs \
+	Banshee.Ampache/Logic/AmpacheViewModel.cs \
 	Banshee.Ampache/Logic/PlayQueue.cs \
-	gtk-gui/Banshee.Ampache.AmpacheView.cs \
 	gtk-gui/Banshee.Ampache.PreferenceView.cs \
 	gtk-gui/generated.cs
 
diff --git a/src/Ampache/Makefile.in b/src/Ampache/Makefile.in
index 9117b69..7dfcba1 100644
--- a/src/Ampache/Makefile.in
+++ b/src/Ampache/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -330,6 +331,7 @@ SOURCES = \
 	Banshee.Ampache/AmpacheSourceContents.cs \
 	Banshee.Ampache/Entities/AmpacheAlbum.cs \
 	Banshee.Ampache/Entities/AmpacheArtist.cs \
+	Banshee.Ampache/Entities/AmpachePlaylist.cs \
 	Banshee.Ampache/Entities/AmpacheSong.cs \
 	Banshee.Ampache/Entities/Handshake.cs \
 	Banshee.Ampache/Entities/IEntity.cs \
@@ -360,8 +362,8 @@ SOURCES = \
 	Banshee.Ampache/IO/SongSelector.cs \
 	Banshee.Ampache/Logic/AmpacheAlbumExtensions.cs \
 	Banshee.Ampache/Logic/AmpacheSongExtensions.cs \
+	Banshee.Ampache/Logic/AmpacheViewModel.cs \
 	Banshee.Ampache/Logic/PlayQueue.cs \
-	gtk-gui/Banshee.Ampache.AmpacheView.cs \
 	gtk-gui/Banshee.Ampache.PreferenceView.cs \
 	gtk-gui/generated.cs
 
@@ -408,7 +410,7 @@ RESOURCES = \
 @ENABLE_AMPACHE_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_AMPACHE_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_AMPACHE_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_AMPACHE_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_AMPACHE_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_AMPACHE_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_AMPACHE_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -642,6 +644,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_AMPACHE_TRUE@check: test
+
 @ENABLE_AMPACHE_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_AMPACHE_TRUE at run: 
diff --git a/src/Ampache/gtk-gui/Banshee.Ampache.AmpacheView.cs b/src/Ampache/gtk-gui/Banshee.Ampache.AmpacheView.cs
deleted file mode 100755
index 9795f27..0000000
--- a/src/Ampache/gtk-gui/Banshee.Ampache.AmpacheView.cs
+++ /dev/null
@@ -1,211 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace Banshee.Ampache
-{
-	public partial class AmpacheView
-	{
-		private global::Gtk.VBox vbox1;
-
-		private global::Gtk.HBox LoginArea;
-
-		private global::Gtk.Label lblConfigure;
-
-		private global::Gtk.VBox vbox5;
-
-		private global::Gtk.Button btnConnect;
-
-		private global::Gtk.HBox hbox3;
-
-		private global::Gtk.Frame frame2;
-
-		private global::Gtk.Alignment GtkAlignment;
-
-		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-
-		private global::Gtk.NodeView ndvArtists;
-
-		private global::Gtk.Label lblArtist;
-
-		private global::Gtk.Frame frame3;
-
-		private global::Gtk.Alignment GtkAlignment1;
-
-		private global::Gtk.ScrolledWindow GtkScrolledWindow1;
-
-		private global::Gtk.NodeView ndvAlbums;
-
-		private global::Gtk.Label lblAlbums;
-
-		private global::Gtk.Frame frame4;
-
-		private global::Gtk.Alignment GtkAlignment2;
-
-		private global::Gtk.ScrolledWindow GtkScrolledWindow2;
-
-		private global::Gtk.NodeView ndvPlaylists;
-
-		private global::Gtk.Label lblPlaylists;
-
-		private global::Gtk.ScrolledWindow GtkScrolledWindow3;
-
-		private global::Gtk.NodeView ndvSongs;
-
-		protected virtual void Build ()
-		{
-			global::Stetic.Gui.Initialize (this);
-			// Widget Banshee.Ampache.AmpacheView
-			global::Stetic.BinContainer.Attach (this);
-			this.Name = "Banshee.Ampache.AmpacheView";
-			// Container child Banshee.Ampache.AmpacheView.Gtk.Container+ContainerChild
-			this.vbox1 = new global::Gtk.VBox ();
-			this.vbox1.Name = "vbox1";
-			this.vbox1.Spacing = 6;
-			// Container child vbox1.Gtk.Box+BoxChild
-			this.LoginArea = new global::Gtk.HBox ();
-			this.LoginArea.Name = "LoginArea";
-			this.LoginArea.Spacing = 6;
-			// Container child LoginArea.Gtk.Box+BoxChild
-			this.lblConfigure = new global::Gtk.Label ();
-			this.lblConfigure.Name = "lblConfigure";
-			this.lblConfigure.LabelProp = global::Mono.Addins.AddinManager.CurrentLocalizer.GetString ("Please configure the Ampache extension, Edit > Perferences");
-			this.LoginArea.Add (this.lblConfigure);
-			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.LoginArea[this.lblConfigure]));
-			w1.Position = 0;
-			w1.Expand = false;
-			w1.Fill = false;
-			// Container child LoginArea.Gtk.Box+BoxChild
-			this.vbox5 = new global::Gtk.VBox ();
-			this.vbox5.Name = "vbox5";
-			this.vbox5.Spacing = 6;
-			// Container child vbox5.Gtk.Box+BoxChild
-			this.btnConnect = new global::Gtk.Button ();
-			this.btnConnect.CanFocus = true;
-			this.btnConnect.Name = "btnConnect";
-			this.btnConnect.UseUnderline = true;
-			this.btnConnect.Label = global::Mono.Addins.AddinManager.CurrentLocalizer.GetString ("Connect");
-			this.vbox5.Add (this.btnConnect);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.btnConnect]));
-			w2.Position = 0;
-			w2.Expand = false;
-			w2.Fill = false;
-			this.LoginArea.Add (this.vbox5);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.LoginArea[this.vbox5]));
-			w3.Position = 2;
-			w3.Expand = false;
-			w3.Fill = false;
-			this.vbox1.Add (this.LoginArea);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.LoginArea]));
-			w4.Position = 0;
-			w4.Expand = false;
-			w4.Fill = false;
-			// Container child vbox1.Gtk.Box+BoxChild
-			this.hbox3 = new global::Gtk.HBox ();
-			this.hbox3.Name = "hbox3";
-			this.hbox3.Spacing = 6;
-			// Container child hbox3.Gtk.Box+BoxChild
-			this.frame2 = new global::Gtk.Frame ();
-			this.frame2.Name = "frame2";
-			this.frame2.ShadowType = ((global::Gtk.ShadowType)(0));
-			// Container child frame2.Gtk.Container+ContainerChild
-			this.GtkAlignment = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
-			this.GtkAlignment.Name = "GtkAlignment";
-			this.GtkAlignment.LeftPadding = ((uint)(12));
-			// Container child GtkAlignment.Gtk.Container+ContainerChild
-			this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow.Name = "GtkScrolledWindow";
-			this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow.Gtk.Container+ContainerChild
-			this.ndvArtists = new global::Gtk.NodeView ();
-			this.ndvArtists.CanFocus = true;
-			this.ndvArtists.Name = "ndvArtists";
-			this.ndvArtists.SearchColumn = 0;
-			this.GtkScrolledWindow.Add (this.ndvArtists);
-			this.GtkAlignment.Add (this.GtkScrolledWindow);
-			this.frame2.Add (this.GtkAlignment);
-			this.lblArtist = new global::Gtk.Label ();
-			this.lblArtist.Name = "lblArtist";
-			this.lblArtist.LabelProp = global::Mono.Addins.AddinManager.CurrentLocalizer.GetString ("Artists");
-			this.lblArtist.UseMarkup = true;
-			this.frame2.LabelWidget = this.lblArtist;
-			this.hbox3.Add (this.frame2);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.frame2]));
-			w8.Position = 0;
-			// Container child hbox3.Gtk.Box+BoxChild
-			this.frame3 = new global::Gtk.Frame ();
-			this.frame3.Name = "frame3";
-			this.frame3.ShadowType = ((global::Gtk.ShadowType)(0));
-			// Container child frame3.Gtk.Container+ContainerChild
-			this.GtkAlignment1 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
-			this.GtkAlignment1.Name = "GtkAlignment1";
-			this.GtkAlignment1.LeftPadding = ((uint)(12));
-			// Container child GtkAlignment1.Gtk.Container+ContainerChild
-			this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
-			this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
-			this.ndvAlbums = new global::Gtk.NodeView ();
-			this.ndvAlbums.CanFocus = true;
-			this.ndvAlbums.Name = "ndvAlbums";
-			this.GtkScrolledWindow1.Add (this.ndvAlbums);
-			this.GtkAlignment1.Add (this.GtkScrolledWindow1);
-			this.frame3.Add (this.GtkAlignment1);
-			this.lblAlbums = new global::Gtk.Label ();
-			this.lblAlbums.Name = "lblAlbums";
-			this.lblAlbums.LabelProp = global::Mono.Addins.AddinManager.CurrentLocalizer.GetString ("Albums");
-			this.lblAlbums.UseMarkup = true;
-			this.frame3.LabelWidget = this.lblAlbums;
-			this.hbox3.Add (this.frame3);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.frame3]));
-			w12.Position = 1;
-			// Container child hbox3.Gtk.Box+BoxChild
-			this.frame4 = new global::Gtk.Frame ();
-			this.frame4.Name = "frame4";
-			this.frame4.ShadowType = ((global::Gtk.ShadowType)(0));
-			// Container child frame4.Gtk.Container+ContainerChild
-			this.GtkAlignment2 = new global::Gtk.Alignment (0f, 0f, 1f, 1f);
-			this.GtkAlignment2.Name = "GtkAlignment2";
-			this.GtkAlignment2.LeftPadding = ((uint)(12));
-			// Container child GtkAlignment2.Gtk.Container+ContainerChild
-			this.GtkScrolledWindow2 = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow2.Name = "GtkScrolledWindow2";
-			this.GtkScrolledWindow2.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow2.Gtk.Container+ContainerChild
-			this.ndvPlaylists = new global::Gtk.NodeView ();
-			this.ndvPlaylists.CanFocus = true;
-			this.ndvPlaylists.Name = "ndvPlaylists";
-			this.GtkScrolledWindow2.Add (this.ndvPlaylists);
-			this.GtkAlignment2.Add (this.GtkScrolledWindow2);
-			this.frame4.Add (this.GtkAlignment2);
-			this.lblPlaylists = new global::Gtk.Label ();
-			this.lblPlaylists.Name = "lblPlaylists";
-			this.lblPlaylists.LabelProp = global::Mono.Addins.AddinManager.CurrentLocalizer.GetString ("Playlists");
-			this.lblPlaylists.UseMarkup = true;
-			this.frame4.LabelWidget = this.lblPlaylists;
-			this.hbox3.Add (this.frame4);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.frame4]));
-			w16.Position = 2;
-			this.vbox1.Add (this.hbox3);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox3]));
-			w17.Position = 1;
-			// Container child vbox1.Gtk.Box+BoxChild
-			this.GtkScrolledWindow3 = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow3.Name = "GtkScrolledWindow3";
-			this.GtkScrolledWindow3.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow3.Gtk.Container+ContainerChild
-			this.ndvSongs = new global::Gtk.NodeView ();
-			this.ndvSongs.CanFocus = true;
-			this.ndvSongs.Name = "ndvSongs";
-			this.ndvSongs.SearchColumn = 0;
-			this.GtkScrolledWindow3.Add (this.ndvSongs);
-			this.vbox1.Add (this.GtkScrolledWindow3);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.GtkScrolledWindow3]));
-			w19.Position = 2;
-			this.Add (this.vbox1);
-			if ((this.Child != null)) {
-				this.Child.ShowAll ();
-			}
-			this.Hide ();
-			this.btnConnect.Clicked += new global::System.EventHandler (this.btnConnect_OnClicked);
-		}
-	}
-}
diff --git a/src/Ampache/gtk-gui/Banshee.Ampache.PreferenceView.cs b/src/Ampache/gtk-gui/Banshee.Ampache.PreferenceView.cs
old mode 100644
new mode 100755
index eed4cba..0062784
--- a/src/Ampache/gtk-gui/Banshee.Ampache.PreferenceView.cs
+++ b/src/Ampache/gtk-gui/Banshee.Ampache.PreferenceView.cs
@@ -47,7 +47,7 @@ namespace Banshee.Ampache
 			this.entPassword.Name = "entPassword";
 			this.entPassword.IsEditable = true;
 			this.entPassword.Visibility = false;
-			this.entPassword.InvisibleChar = '●';
+			this.entPassword.InvisibleChar = '•';
 			this.table1.Add (this.entPassword);
 			global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1[this.entPassword]));
 			w1.TopAttach = ((uint)(2));
@@ -60,7 +60,7 @@ namespace Banshee.Ampache
 			this.entUrl.CanFocus = true;
 			this.entUrl.Name = "entUrl";
 			this.entUrl.IsEditable = true;
-			this.entUrl.InvisibleChar = '●';
+			this.entUrl.InvisibleChar = '•';
 			this.table1.Add (this.entUrl);
 			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.entUrl]));
 			w2.LeftAttach = ((uint)(1));
@@ -71,7 +71,7 @@ namespace Banshee.Ampache
 			this.entUser.CanFocus = true;
 			this.entUser.Name = "entUser";
 			this.entUser.IsEditable = true;
-			this.entUser.InvisibleChar = '●';
+			this.entUser.InvisibleChar = '•';
 			this.table1.Add (this.entUser);
 			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.entUser]));
 			w3.TopAttach = ((uint)(1));
diff --git a/src/Ampache/gtk-gui/gui.stetic b/src/Ampache/gtk-gui/gui.stetic
index 7f2feaf..dfca7e9 100755
--- a/src/Ampache/gtk-gui/gui.stetic
+++ b/src/Ampache/gtk-gui/gui.stetic
@@ -5,229 +5,12 @@
     <target-gtk-version>2.12</target-gtk-version>
   </configuration>
   <import>
-    <widget-library name="Banshee.NowPlaying, Version=1.8.0.0, Culture=neutral" />
-    <widget-library name="Banshee.ThickClient, Version=1.8.0.0, Culture=neutral" />
-    <widget-library name="Banshee.Widgets, Version=1.8.0.0, Culture=neutral" />
-    <widget-library name="Hyena.Gui, Version=1.8.0.0, Culture=neutral" />
+    <widget-library name="Banshee.NowPlaying, Version=1.9.0.0, Culture=neutral" />
+    <widget-library name="Banshee.ThickClient, Version=1.9.0.0, Culture=neutral" />
+    <widget-library name="Banshee.Widgets, Version=1.9.0.0, Culture=neutral" />
+    <widget-library name="Hyena.Gui, Version=1.9.0.0, Culture=neutral" />
     <widget-library name="../../../bin/Banshee.Ampache.dll" internal="true" />
   </import>
-  <widget class="Gtk.Bin" id="Banshee.Ampache.AmpacheView" design-size="481 300">
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <child>
-      <widget class="Gtk.VBox" id="vbox1">
-        <property name="MemberName" />
-        <property name="Spacing">6</property>
-        <child>
-          <widget class="Gtk.HBox" id="LoginArea">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <child>
-              <widget class="Gtk.Label" id="lblConfigure">
-                <property name="MemberName" />
-                <property name="LabelProp" translatable="yes">Please configure the Ampache extension, Edit > Perferences</property>
-              </widget>
-              <packing>
-                <property name="Position">0</property>
-                <property name="AutoSize">True</property>
-                <property name="Expand">False</property>
-                <property name="Fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <placeholder />
-            </child>
-            <child>
-              <widget class="Gtk.VBox" id="vbox5">
-                <property name="MemberName" />
-                <property name="Spacing">6</property>
-                <child>
-                  <widget class="Gtk.Button" id="btnConnect">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="Type">TextOnly</property>
-                    <property name="Label" translatable="yes">Connect</property>
-                    <property name="UseUnderline">True</property>
-                    <signal name="Clicked" handler="btnConnect_OnClicked" />
-                  </widget>
-                  <packing>
-                    <property name="Position">0</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">2</property>
-                <property name="AutoSize">True</property>
-                <property name="Expand">False</property>
-                <property name="Fill">False</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="Position">0</property>
-            <property name="AutoSize">True</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="Gtk.HBox" id="hbox3">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <child>
-              <widget class="Gtk.Frame" id="frame2">
-                <property name="MemberName" />
-                <property name="ShadowType">None</property>
-                <child>
-                  <widget class="Gtk.Alignment" id="GtkAlignment">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="Yalign">0</property>
-                    <property name="LeftPadding">12</property>
-                    <child>
-                      <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
-                        <property name="MemberName" />
-                        <property name="ShadowType">In</property>
-                        <child>
-                          <widget class="Gtk.NodeView" id="ndvArtists">
-                            <property name="MemberName" />
-                            <property name="CanFocus">True</property>
-                            <property name="ShowScrollbars">True</property>
-                            <property name="SearchColumn">0</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="lblArtist">
-                    <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Artists</property>
-                    <property name="UseMarkup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">0</property>
-                <property name="AutoSize">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.Frame" id="frame3">
-                <property name="MemberName" />
-                <property name="ShadowType">None</property>
-                <child>
-                  <widget class="Gtk.Alignment" id="GtkAlignment1">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="Yalign">0</property>
-                    <property name="LeftPadding">12</property>
-                    <child>
-                      <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow1">
-                        <property name="MemberName" />
-                        <property name="ShadowType">In</property>
-                        <child>
-                          <widget class="Gtk.NodeView" id="ndvAlbums">
-                            <property name="MemberName" />
-                            <property name="CanFocus">True</property>
-                            <property name="ShowScrollbars">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="lblAlbums">
-                    <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Albums</property>
-                    <property name="UseMarkup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">1</property>
-                <property name="AutoSize">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.Frame" id="frame4">
-                <property name="MemberName" />
-                <property name="ShadowType">None</property>
-                <child>
-                  <widget class="Gtk.Alignment" id="GtkAlignment2">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="Yalign">0</property>
-                    <property name="LeftPadding">12</property>
-                    <child>
-                      <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow2">
-                        <property name="MemberName" />
-                        <property name="ShadowType">In</property>
-                        <child>
-                          <widget class="Gtk.NodeView" id="ndvPlaylists">
-                            <property name="MemberName" />
-                            <property name="CanFocus">True</property>
-                            <property name="ShowScrollbars">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="lblPlaylists">
-                    <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Playlists</property>
-                    <property name="UseMarkup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="type">label_item</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">2</property>
-                <property name="AutoSize">False</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="Position">1</property>
-            <property name="AutoSize">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow3">
-            <property name="MemberName" />
-            <property name="ShadowType">In</property>
-            <child>
-              <widget class="Gtk.NodeView" id="ndvSongs">
-                <property name="MemberName" />
-                <property name="CanFocus">True</property>
-                <property name="ShowScrollbars">True</property>
-                <property name="SearchColumn">0</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="Position">2</property>
-            <property name="AutoSize">True</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
   <widget class="Gtk.Bin" id="Banshee.Ampache.PreferenceView" design-size="404 300">
     <property name="MemberName" />
     <property name="Visible">False</property>
@@ -248,7 +31,6 @@
                 <property name="CanFocus">True</property>
                 <property name="IsEditable">True</property>
                 <property name="Visibility">False</property>
-                <property name="InvisibleChar">●</property>
               </widget>
               <packing>
                 <property name="TopAttach">2</property>
@@ -270,7 +52,6 @@
                 <property name="MemberName" />
                 <property name="CanFocus">True</property>
                 <property name="IsEditable">True</property>
-                <property name="InvisibleChar">●</property>
               </widget>
               <packing>
                 <property name="LeftAttach">1</property>
@@ -290,7 +71,6 @@
                 <property name="MemberName" />
                 <property name="CanFocus">True</property>
                 <property name="IsEditable">True</property>
-                <property name="InvisibleChar">●</property>
               </widget>
               <packing>
                 <property name="TopAttach">1</property>
diff --git a/src/AppIndicator/Makefile.in b/src/AppIndicator/Makefile.in
index edb65a7..4867b54 100644
--- a/src/AppIndicator/Makefile.in
+++ b/src/AppIndicator/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -368,7 +369,7 @@ RESOURCES = \
 @ENABLE_APPINDICATOR_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_APPINDICATOR_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_APPINDICATOR_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_APPINDICATOR_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_APPINDICATOR_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_APPINDICATOR_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_APPINDICATOR_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -602,6 +603,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_APPINDICATOR_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_APPINDICATOR_TRUE@check: test
+
 @ENABLE_APPINDICATOR_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_APPINDICATOR_TRUE at run: 
diff --git a/src/AssemblyInfo.cs b/src/AssemblyInfo.cs
index 2952b69..81db0a0 100644
--- a/src/AssemblyInfo.cs
+++ b/src/AssemblyInfo.cs
@@ -1,5 +1,5 @@
 using System.Reflection;
 using System.Runtime.CompilerServices;
 
-[assembly: AssemblyVersion("1.9.0")]
+[assembly: AssemblyVersion("1.9.1")]
 
diff --git a/src/Awn/Makefile.in b/src/Awn/Makefile.in
index 8bc2100..a4741ef 100644
--- a/src/Awn/Makefile.in
+++ b/src/Awn/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -363,7 +364,7 @@ RESOURCES = Banshee.Awn.addin.xml
 @ENABLE_AWN_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_AWN_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_AWN_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_AWN_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_AWN_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_AWN_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_AWN_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -597,6 +598,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_AWN_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_AWN_TRUE@check: test
+
 @ENABLE_AWN_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_AWN_TRUE at run: 
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/AlbumLoader.cs b/src/ClutterFlow/Banshee.ClutterFlow/AlbumLoader.cs
index 0af2017..cae6c92 100755
--- a/src/ClutterFlow/Banshee.ClutterFlow/AlbumLoader.cs
+++ b/src/ClutterFlow/Banshee.ClutterFlow/AlbumLoader.cs
@@ -224,21 +224,21 @@ namespace Banshee.ClutterFlow
 		}
 		
 		public ClutterFlowAlbum CurrentActor {
-			get { return (ClutterFlowAlbum) coverManager.CurrentCover; }
+			get { return (ClutterFlowAlbum) CoverManager.CurrentCover; }
 		}
 		
         public AlbumInfo CurrentAlbum {
             get {
-                if (coverManager.CurrentCover!=null && coverManager.CurrentCover is ClutterFlowAlbum)
-                    return (coverManager.CurrentCover as ClutterFlowAlbum).Album;
+                if (CoverManager.CurrentCover!=null && CoverManager.CurrentCover is ClutterFlowAlbum)
+                    return (CoverManager.CurrentCover as ClutterFlowAlbum).Album;
                 else
                     return null;
             }
         }
         public int CurrentIndex {
             get {
-                if (coverManager.CurrentCover!=null && coverManager.CurrentCover is ClutterFlowAlbum)
-                    return (coverManager.CurrentCover as ClutterFlowAlbum).Index;
+                if (CoverManager.CurrentCover!=null && CoverManager.CurrentCover is ClutterFlowAlbum)
+                    return (CoverManager.CurrentCover as ClutterFlowAlbum).Index;
                 else
                     return -1;
             }
@@ -251,7 +251,7 @@ namespace Banshee.ClutterFlow
 
         public virtual void ScrollTo (AlbumInfo generator)
         {
-            coverManager.Timeline.Timeout = 500; //give 'm some time to load the song etc.
+            CoverManager.Timeline.Timeout = 500; //give 'm some time to load the song etc.
             ScrollTo (ClutterFlowAlbum.CreateCacheKey (generator));
         }
 		
@@ -260,12 +260,12 @@ namespace Banshee.ClutterFlow
             string key = ClutterFlowAlbum.CreateCacheKey(generator);
             ClutterFlowBaseActor actor = Cache.ContainsKey (key) ? Cache[key] : null;
             if (actor==null) {
-                actor = new ClutterFlowAlbum (generator, coverManager);
+                actor = new ClutterFlowAlbum (generator, CoverManager);
 				actor.Hide ();
                 Cache.Add (key, actor);
             }
 			actor.SortLabel = Comparer.GetSortLabel(generator);
-            list.Add (generator, actor);
+            list[generator] = actor;
 			actor.Index = list.Count;
             return actor;
         }
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/ArtworkLookup.cs b/src/ClutterFlow/Banshee.ClutterFlow/ArtworkLookup.cs
index f9611be..b38dd76 100755
--- a/src/ClutterFlow/Banshee.ClutterFlow/ArtworkLookup.cs
+++ b/src/ClutterFlow/Banshee.ClutterFlow/ArtworkLookup.cs
@@ -49,18 +49,9 @@ namespace Banshee.ClutterFlow
 		#region Fields
 		private ArtworkManager artwork_manager;
 
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public CoverManager CoverManager {
 			get { return coverManager; }
-			set {
-				if (coverManager!=null) {
-					coverManager.TargetIndexChanged -= HandleTargetIndexChanged;
-				}
-				coverManager = value;
-				if (coverManager!=null) {
-					coverManager.TargetIndexChanged += HandleTargetIndexChanged;
-				}
-			}
 		}
 
 		public object SyncRoot {
@@ -98,7 +89,8 @@ namespace Banshee.ClutterFlow
 		public ArtworkLookup (CoverManager coverManager)
 		{
 			//Log.Debug ("ArtworkLookup ctor ()");
-		 	CoverManager = coverManager;
+		 	this.coverManager = coverManager;
+            CoverManager.TargetIndexChanged += HandleTargetIndexChanged;
 			artwork_manager = ServiceManager.Get<ArtworkManager> ();
 			artwork_manager.AddCachedSize (CoverManager.TextureSize);
 
@@ -138,6 +130,8 @@ namespace Banshee.ClutterFlow
             if (disposed)
                 return;
             disposed = true;
+
+            CoverManager.TargetIndexChanged -= HandleTargetIndexChanged;
             Log.Debug ("ArtworkLookup Dispose ()");
 			Stop ();
             LookupQueue.Dispose ();
@@ -197,11 +191,10 @@ namespace Banshee.ClutterFlow
 					ClutterFlowAlbum cover = LookupQueue.Dequeue ();
 					float size = cover.CoverManager.TextureSize;
 					string cache_id = cover.PbId;
-					Gdk.Pixbuf pb = artwork_manager.LookupScalePixbuf (cache_id, (int) size);
-					if (pb!=null) {
-                        pb = ClutterFlowActor.MakeReflection(pb);
+					Cairo.ImageSurface surface = artwork_manager.LookupScaleSurface(cache_id, (int) size);
+					if (surface!=null) {
                         Gtk.Application.Invoke (delegate {
-                            GtkInvoke (cover, pb);
+							SetCoverToSurface(cover, surface);
                         });
 					}
                     t.IsBackground = true;
@@ -217,19 +210,17 @@ namespace Banshee.ClutterFlow
         {
             float size = cover.CoverManager.TextureSize;
             string cache_id = cover.PbId;
-            Gdk.Pixbuf pb = artwork_manager.LookupScalePixbuf (cache_id, (int) size);
-            if (pb!=null) {
-                pb = ClutterFlowActor.MakeReflection(pb);
-                GtkInvoke (cover, pb);
+            Cairo.ImageSurface surface = artwork_manager.LookupScaleSurface(cache_id, (int) size);
+            if (surface!=null) {
+                SetCoverToSurface(cover, surface);
             }
         }
 
-        private void GtkInvoke (ClutterFlowAlbum cover, Gdk.Pixbuf pb)
+        private void SetCoverToSurface (ClutterFlowAlbum cover, Cairo.ImageSurface surface)
         {
-            cover.Enqueued = false;
-            cover.SwappedToDefault = false;
-            GtkUtil.TextureSetFromPixbuf (cover.Cover, pb);
-            pb.Dispose ();
+	            cover.Enqueued = false;
+	            //cover.SwappedToDefault = false;
+				ClutterFlowActor.MakeReflection(surface, cover.Cover);
         }
 	}
 }
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowAlbum.cs b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowAlbum.cs
index 40c25af..ffb0df8 100755
--- a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowAlbum.cs
+++ b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowAlbum.cs
@@ -110,9 +110,15 @@ namespace Banshee.ClutterFlow
 		#endregion
 		
 		#region Texture Handling
-		protected override Gdk.Pixbuf GetDefaultPb ()
+		protected override Cairo.ImageSurface GetDefaultSurface ()
 		{
-			return IconThemeUtils.LoadIcon (coverManager.TextureSize, "media-optical", "browser-album-cover");
+			Cairo.ImageSurface surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, CoverManager.TextureSize, CoverManager.TextureSize);
+			Cairo.Context context = new Cairo.Context(surface);
+			Gdk.CairoHelper.SetSourcePixbuf(context, IconThemeUtils.LoadIcon (CoverManager.TextureSize, "media-optical", "browser-album-cover"), 0, 0);
+			context.Paint();
+			//((IDisposable) context.Target).Dispose();
+			((IDisposable) context).Dispose();
+			return  surface;
 		}	
 
 		protected override void HandleTextureSizeChanged (object sender, System.EventArgs e)
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowService.cs b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowService.cs
index 351e870..ee52d2a 100755
--- a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowService.cs
+++ b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowService.cs
@@ -60,7 +60,7 @@ namespace Banshee.ClutterFlow
                 Clutter.Threads.Init();
                 if (ClutterHelper.gtk_clutter_init (IntPtr.Zero, IntPtr.Zero) != InitError.Success)
                     throw new System.NotSupportedException ("Unable to initialize GtkClutter");
-               System.AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
+                System.AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
                 state = 1;
             }
         }
@@ -75,10 +75,13 @@ namespace Banshee.ClutterFlow
         public static void Quit ()
         {
             if (state == 1) {
-                if (BeforeQuit!=null) BeforeQuit (null, EventArgs.Empty);
+                EventHandler handler = BeforeQuit;
+                if (handler != null) {
+                    handler (null, EventArgs.Empty);
+                }
                 Clutter.Application.Quit ();
                 filter_view.Dispose ();
-                System.GC.Collect();
+                filter_view = null;
                 state = 2;
             }
         }
@@ -108,7 +111,7 @@ namespace Banshee.ClutterFlow
 		private PreferenceService preference_service;
 		private InterfaceActionService action_service;
 
-         private uint ui_manager_id;
+        private uint ui_manager_id;
         private ActionGroup clutterflow_actions;
 		private ToggleAction browser_action;
 		protected ToggleAction BrowserAction {
@@ -147,11 +150,7 @@ namespace Banshee.ClutterFlow
 		{
             ClutterFlowManager.Init ();
 		}
-        ~ ClutterFlowService ()
-        {
-            Dispose ();
-        }
-		
+
 		void IExtensionService.Initialize ()
 		{	
 			preference_service = ServiceManager.Get<PreferenceService> ();
@@ -197,7 +196,8 @@ namespace Banshee.ClutterFlow
 		#region Setup
 		private bool SetupSourceContents ()
 		{
-			if (music_library==null || preference_service==null || action_service==null)
+			if (music_library==null || preference_service==null || action_service==null
+			    || ServiceManager.SourceManager.ActiveSource == null)
 				return false;		
 
             clutter_flow_contents = new ClutterFlowContents ();
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowView.cs b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowView.cs
index 224a624..245bb97 100755
--- a/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowView.cs
+++ b/src/ClutterFlow/Banshee.ClutterFlow/ClutterFlowView.cs
@@ -83,11 +83,11 @@ namespace Banshee.ClutterFlow
         #endregion
 
         #region General
-		protected AlbumLoader albumLoader;
+		private AlbumLoader albumLoader;
 		public AlbumLoader AlbumLoader {
 			get { return albumLoader; }
 		}
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public CoverManager CoverManager {
 			get { return coverManager; }
 		}
@@ -254,6 +254,7 @@ namespace Banshee.ClutterFlow
             disposed = true;
 
             DetachEvents ();
+            AlbumLoader.Dispose ();
             CoverManager.Dispose ();
 
             //base.Dispose ();
@@ -266,6 +267,8 @@ namespace Banshee.ClutterFlow
 			coverManager.SetRotation (RotateAxis.X, viewportAngleX, Stage.Width/2, Stage.Height/2,0);
 			Stage.Add (coverManager);
 
+			
+			
 			coverManager.EmptyActor.SetToPb(
 	            IconThemeUtils.LoadIcon (coverManager.TextureSize, "gtk-stop", "clutterflow-large.png")
             );
diff --git a/src/ClutterFlow/Banshee.ClutterFlow/Makefile.in b/src/ClutterFlow/Banshee.ClutterFlow/Makefile.in
index abf79a2..f0a945b 100644
--- a/src/ClutterFlow/Banshee.ClutterFlow/Makefile.in
+++ b/src/ClutterFlow/Banshee.ClutterFlow/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -384,7 +385,7 @@ EXTRA_BUNDLE = $(CLUTTER_BUNDLEFILES)
 @ENABLE_CLUTTERFLOW_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_CLUTTERFLOW_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_CLUTTERFLOW_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_CLUTTERFLOW_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_CLUTTERFLOW_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_CLUTTERFLOW_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_CLUTTERFLOW_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -618,6 +619,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_CLUTTERFLOW_TRUE@check: test
+
 @ENABLE_CLUTTERFLOW_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_CLUTTERFLOW_TRUE at run: 
diff --git a/src/ClutterFlow/ClutterFlow/ActorLoader.cs b/src/ClutterFlow/ClutterFlow/ActorLoader.cs
index fc6e1a3..b8d704a 100755
--- a/src/ClutterFlow/ClutterFlow/ActorLoader.cs
+++ b/src/ClutterFlow/ClutterFlow/ActorLoader.cs
@@ -33,7 +33,7 @@ namespace ClutterFlow
 {
 
 	public interface IActorLoader : IDisposable {
-		CoverManager CoverManager { get; set; }
+		CoverManager CoverManager { get; }
 		List<ClutterFlowBaseActor> GetActors (System.Action<ClutterFlowBaseActor> method_call);
 	}
 	
@@ -44,25 +44,17 @@ namespace ClutterFlow
 			get { return cached_covers; }
 		}
 		
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public virtual CoverManager CoverManager {
 			get { return coverManager; }
-			set {
-				if (coverManager!=null) {
-					coverManager.ActorActivated -= HandleActorActivated;
-				}
-				coverManager = value;
-                if (coverManager!=null) {
-					coverManager.ActorActivated += HandleActorActivated;
-				    coverManager.ActorLoader = this;
-				}
-			}
 		}
 		#endregion
 		
 		public ActorLoader (CoverManager coverManager)
 		{
-			this.CoverManager = coverManager;
+			this.coverManager = coverManager;
+            CoverManager.ActorActivated += HandleActorActivated;
+            CoverManager.ActorLoader = this;
 		}
         protected bool disposed = false;
         public virtual void Dispose ()
@@ -70,10 +62,12 @@ namespace ClutterFlow
             if (disposed)
                 return;
             disposed = true;
+            
+            CoverManager.ActorActivated -= HandleActorActivated;
+
             foreach (ClutterFlowBaseActor actor in cached_covers.Values)
                 actor.Dispose ();
             cached_covers.Clear ();
-            coverManager = null;
         }
 
 		protected virtual void RefreshCoverManager ()
diff --git a/src/ClutterFlow/ClutterFlow/AlphabetBar.cs b/src/ClutterFlow/ClutterFlow/AlphabetBar.cs
index 2f37ab5..0bc2a6d 100644
--- a/src/ClutterFlow/ClutterFlow/AlphabetBar.cs
+++ b/src/ClutterFlow/ClutterFlow/AlphabetBar.cs
@@ -9,7 +9,7 @@ namespace ClutterFlow.Alphabet
 
 	public class AlphabetEventArgs : EventArgs
 	{
-		protected AlphabetChars letter = AlphabetChars.unkown;
+		protected AlphabetChars letter = AlphabetChars.unknown;
 		public AlphabetChars Letter {
 			get { return letter; }
 		}
diff --git a/src/ClutterFlow/ClutterFlow/AlphabetButton.cs b/src/ClutterFlow/ClutterFlow/AlphabetButton.cs
index d0e60cf..bc330b8 100644
--- a/src/ClutterFlow/ClutterFlow/AlphabetButton.cs
+++ b/src/ClutterFlow/ClutterFlow/AlphabetButton.cs
@@ -11,7 +11,7 @@ namespace ClutterFlow.Alphabet
 
 
 	public enum AlphabetChars {
-		unkown=0x003F, A=0x0041, B=0x0042,
+		unknown=0x003F, A=0x0041, B=0x0042,
 		C=0x0043, D=0x0044, E=0x0045,
 		F=0x0046, G=0x0047, H=0x0048,
 		I=0x0049, J=0x004A, K=0x004B,
@@ -32,7 +32,7 @@ namespace ClutterFlow.Alphabet
 		
 		protected Text label;
 		
-		protected AlphabetChars letter = AlphabetChars.unkown;
+		protected AlphabetChars letter = AlphabetChars.unknown;
 		public virtual AlphabetChars Letter {
 			get { return letter; }
 			set {
diff --git a/src/ClutterFlow/ClutterFlow/Caption.cs b/src/ClutterFlow/ClutterFlow/Caption.cs
index 4d49aee..48d16ec 100755
--- a/src/ClutterFlow/ClutterFlow/Caption.cs
+++ b/src/ClutterFlow/ClutterFlow/Caption.cs
@@ -39,15 +39,17 @@ namespace ClutterFlow.Captions
 		#region Fields
 		public abstract string DefaultValue { get; set; }
 
-		protected CoverManager coverManager;
-		public abstract CoverManager CoverManager { get; set; }
+		private CoverManager coverManager;
+		public CoverManager CoverManager {
+            get { return coverManager; }
+        }
 		
 		protected Animation aFade = null;
 		#endregion
 		
 		public Caption (CoverManager coverManager, string font_name, Color color) : base (clutter_text_new ())
 		{
-			CoverManager = coverManager;
+			this.coverManager = coverManager;
 			Editable = false;
 			Selectable = false;
 			Activatable = false;
diff --git a/src/ClutterFlow/ClutterFlow/ClutterFlowActor.cs b/src/ClutterFlow/ClutterFlow/ClutterFlowActor.cs
index 265e4bd..1249b1e 100755
--- a/src/ClutterFlow/ClutterFlow/ClutterFlowActor.cs
+++ b/src/ClutterFlow/ClutterFlow/ClutterFlowActor.cs
@@ -43,32 +43,21 @@ namespace ClutterFlow
         event IndexChangedEventHandler IndexChanged;
     }
 
-	public delegate Gdk.Pixbuf NeedPixbuf();
+	public delegate Cairo.ImageSurface NeedSurface();
     public delegate void IndexChangedEventHandler(IIndexable item, int old_index, int new_index);
 	
 	public class TextureHolder : IDisposable {
 		#region Fields
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public CoverManager CoverManager {
 			get { return coverManager; }
-			set {
-				if (value!=coverManager) {
-					if (coverManager!=null) {
-						coverManager.TextureSizeChanged -= HandleTextureSizeChanged;
-					}
-					coverManager = value;
-					if (coverManager!=null) {
-						coverManager.TextureSizeChanged += HandleTextureSizeChanged;
-					}
-				}
-			}
 		}
 		
-		protected Gdk.Pixbuf default_pb;
-		public Gdk.Pixbuf DefaultPb {
+		protected Cairo.ImageSurface default_surface;
+		public Cairo.ImageSurface DefaultSurface {
 			get {
-				if (default_pb==null && GetDefaultPb!=null) default_pb = ClutterFlowActor.MakeReflection(GetDefaultPb());
-				return default_pb;
+				if (default_surface==null && GetDefaultSurface!=null) default_surface = ClutterFlowActor.MakeReflection(GetDefaultSurface());
+				return default_surface;
 			}
 		}
 		
@@ -88,28 +77,30 @@ namespace ClutterFlow
 			}
 		}
 		
-		public NeedPixbuf GetDefaultPb;
+		public NeedSurface GetDefaultSurface;
 		#endregion
 
 		#region Initialisation
-		public TextureHolder (CoverManager coverManager, NeedPixbuf getDefaultPb)
+		public TextureHolder (CoverManager coverManager, NeedSurface getDefaultSurface)
 		{
-			this.CoverManager = coverManager;
-			this.GetDefaultPb = getDefaultPb;
+			this.coverManager = coverManager;
+            CoverManager.TextureSizeChanged += HandleTextureSizeChanged;
+			this.GetDefaultSurface = getDefaultSurface;
 			ReloadDefaultTextures ();
 		}
-        ~ TextureHolder () {
-            Dispose ();
-        }
+
         protected bool disposed = false;
         public virtual void Dispose ()
         {
             if (disposed)
                 return;
             disposed = true;
-            CoverManager = null;
-            GetDefaultPb = null;
-            default_pb.Dispose ();
+
+            CoverManager.TextureSizeChanged -= HandleTextureSizeChanged;
+
+            if (default_surface != null) {
+                ((IDisposable) default_surface).Dispose ();
+            }
             Cogl.Handle.Unref (defltTexture);
             Cogl.Handle.Unref (shadeTexture);
             defltTexture = IntPtr.Zero;
@@ -119,7 +110,10 @@ namespace ClutterFlow
 
 		public void ReloadDefaultTextures ()
 		{
-			default_pb = null; //reset this so it gets reloaded
+			if (default_surface != null)
+				((IDisposable) default_surface).Dispose ();
+			default_surface = null; //reset this so it gets reloaded
+			
 			SetupDefaultTexture ();
 			SetupShadeTexture ();
 		}
@@ -127,15 +121,17 @@ namespace ClutterFlow
 		public void SetupDefaultTexture ()
 		{
 			if (defltTexture==IntPtr.Zero) {
-				if (DefaultPb!=null) {
+				if (DefaultSurface!=null) {
 					Cogl.PixelFormat fm;
-					if (DefaultPb.HasAlpha)
-						fm = PixelFormat.Rgba8888;
-					else
+					if (DefaultSurface.Format == Cairo.Format.ARGB32)
+						fm = PixelFormat.Argb8888Pre;
+					else //if (DefaultSurface.Format == Cairo.Format.RGB24)
 						fm = PixelFormat.Rgb888;
+					
 					unsafe {
-						defltTexture = ClutterHelper.cogl_texture_new_from_data((uint) DefaultPb.Width, (uint) DefaultPb.Height, Cogl.TextureFlags.None,
-						                                         fm, Cogl.PixelFormat.Any, (uint) DefaultPb.Rowstride, DefaultPb.Pixels);
+						
+						defltTexture = ClutterHelper.cogl_texture_new_from_data((uint) DefaultSurface.Width, (uint) DefaultSurface.Height, Cogl.TextureFlags.None,
+						                                         fm, Cogl.PixelFormat.Any, (uint) DefaultSurface.Stride, DefaultSurface.DataPtr);
 					}
 				} else {
 					defltTexture = Cogl.Texture.NewWithSize ((uint) coverManager.TextureSize, (uint) coverManager.TextureSize,
@@ -189,21 +185,9 @@ namespace ClutterFlow
     public abstract class ClutterFlowBaseActor : Clutter.Group, IIndexable
     {
         #region Fields
-        protected CoverManager coverManager;
+        private CoverManager coverManager;
         public virtual CoverManager CoverManager {
             get { return coverManager; }
-            set {
-                if (value!=coverManager) {
-                    if (coverManager!=null) {
-                        System.GC.SuppressFinalize (this);
-                        coverManager.Remove (this);
-                    }
-                    coverManager = value;
-                    if (coverManager!=null) {
-                        coverManager.Add (this);
-                    }
-                }
-            }
         }
 
         protected string cache_key = "";
@@ -248,13 +232,10 @@ namespace ClutterFlow
 
         public ClutterFlowBaseActor (CoverManager cover_manager) : base ()
         {
-            this.CoverManager = cover_manager;
+            coverManager = cover_manager;
+            coverManager.Add (this);
         }
 
-        ~ ClutterFlowBaseActor ()
-        {
-            Dispose ();
-        }
         protected bool disposed = false;
         public override void Dispose ()
         {
@@ -262,65 +243,64 @@ namespace ClutterFlow
                 return;
             disposed = true;
 
-            CoverManager = null;
+            coverManager.Remove (this);
+
+            base.Dispose ();
         }
 
         #region Texture Handling
-        public static Gdk.Pixbuf MakeReflection (Pixbuf pb) {
-            if (pb.BitsPerSample != 8)
-                throw new System.Exception ("Invalid bits per sample");
+        public static void MakeReflection (Cairo.ImageSurface source, CairoTexture dest) {
+	        int w = source.Width + 4;
+	        int h = source.Height * 2 + 4;
 			
+			dest.SetSurfaceSize ((uint) w, (uint) h);
 			
-			Gdk.Pixbuf border_pb = new Gdk.Pixbuf(Colorspace.Rgb, true, pb.BitsPerSample, pb.Width+4, pb.Height+2);
-			border_pb.Fill (0x00000000);
-			pb.CopyArea (0, 0, pb.Width, pb.Height, border_pb, 2, 2);
 			
-			Gdk.Pixbuf final_pb = new Gdk.Pixbuf(Colorspace.Rgb, true, border_pb.BitsPerSample, border_pb.Width, border_pb.Height*2);
-
-
-            unsafe {
-
-                bool alpha = border_pb.HasAlpha;
-                int src_rowstride = border_pb.Rowstride;
-                int src_width = border_pb.Width;
-                int src_height = border_pb.Height;
-                byte * src_byte = (byte *) border_pb.Pixels;
-                byte * src_base = src_byte;
-
-                int dst_rowstride = final_pb.Rowstride;
-                int dst_width = final_pb.Width;
-                int dst_height = final_pb.Height;
-                byte * dst_byte = (byte *) final_pb.Pixels;
-                byte * dst_base = dst_byte;
-
-                byte * refl_byte = dst_base + (dst_height-1) * dst_rowstride + (dst_width-1) * 4  + 3;
-
-                for (int j = 0; j < src_height; j++) {
-                    src_byte = ((byte *) src_base) + j * src_rowstride;
-                    dst_byte = ((byte *) dst_base) + j * dst_rowstride;
-                    refl_byte = ((byte *) dst_base) + (dst_height-1-j) * dst_rowstride;
-                    for (int i = 0; i < src_width; i++) {
-                        byte r = *(src_byte++);
-                        byte g = *(src_byte++);
-                        byte b = *(src_byte++);
-                        byte a = 0xff;
-                        if (alpha)
-                            a = *(src_byte++);
-
-                        *dst_byte++ = r;
-                        *dst_byte++ = g;
-                        *dst_byte++ = b;
-                        *dst_byte++ = a;
-                        *refl_byte++ = r;
-                        *refl_byte++ = g;
-                        *refl_byte++ = b;
-                        *refl_byte++ = (byte) ((float) a * (float) (Math.Max(0, j - 0.3*src_height) / src_height));
-                    }
-                }
-            }
 			
-            return final_pb;
+			Cairo.Context context = dest.Create();
+			
+			MakeReflection (context, source,  w, h);
+
+			//((IDisposable) context.Target).Dispose();
+			((IDisposable) context).Dispose();
+        }
+		
+		
+        public static Cairo.ImageSurface MakeReflection (Cairo.ImageSurface source) {
+	        int w = source.Width + 4;
+	        int h = source.Height * 2 + 4;
+			
+			Cairo.ImageSurface dest = new Cairo.ImageSurface(Cairo.Format.ARGB32, w, h);
+			Cairo.Context context = new Cairo.Context(dest);
+	
+			MakeReflection (context, source, w, h);
+
+			//((IDisposable) context.Target).Dispose();
+			((IDisposable) context).Dispose();
+			
+			return dest;
         }
+		
+		private static void MakeReflection (Cairo.Context context, Cairo.ImageSurface source, int w, int h) {
+
+			context.ResetClip ();			
+			context.SetSourceSurface(source, 2, 2);
+	        context.Paint();
+			
+	        double alpha = -0.3;
+	        double step = 1.0 / (double) source.Height;
+
+			context.Translate(0, h);
+			context.Scale (1, -1);
+			context.SetSourceSurface(source, 2, 2);
+	        for (int i = 0; i < source.Height; i++) {
+				context.Rectangle(0, i+2, w, 1);
+	            context.Clip();
+				alpha += step;
+	            context.PaintWithAlpha(Math.Max(Math.Min(alpha, 0.7), 0.0));
+	            context.ResetClip();
+			}
+		}
         #endregion
     }
 
@@ -339,10 +319,10 @@ namespace ClutterFlow
             protected set { is_setup = value; }
         }
 
-        private bool swapped = false;
-        private bool delayed_cover_swap = false;
+       /* private bool swapped = false;
+        private bool delayed_cover_swap = false;*/
         private bool delayed_shade_swap = false;
-        public bool SwappedToDefault {
+        /*public bool SwappedToDefault {
             get { return swapped; }
             set {
                 if (value!=swapped) {
@@ -353,15 +333,15 @@ namespace ClutterFlow
                         SetCoverSwap ();
                 }
             }
-        }
+        }*/
 		
 		protected bool CanUseShader {
 			get {
-				return ClutterHelper.CheckForExtension ("GL_ARB_vertex_shader");
+				return Clutter.Feature.Available (Clutter.FeatureFlags.ShadersGlsl);
 			}
 		}
 		
-        private void SetCoverSwap () {
+        /*private void SetCoverSwap () {
             if (swapped) {
                 cover.CoglTexture = textureHolder.DefaultTexture;
             } else {
@@ -369,7 +349,7 @@ namespace ClutterFlow
                                                              Cogl.TextureFlags.NoSlicing, Cogl.PixelFormat.Argb8888);
             }
             delayed_cover_swap = false;
-        }
+        }*/
 
         private void SetShadeSwap () {
 			if (!has_shader) {
@@ -378,8 +358,8 @@ namespace ClutterFlow
 			}
         }
 
-        protected Clutter.Texture cover = null;
-        public Clutter.Texture Cover {
+        protected Clutter.CairoTexture cover = null;
+        public Clutter.CairoTexture Cover {
             get { return cover; }
         }
         protected Clutter.Texture shade = null;
@@ -388,56 +368,45 @@ namespace ClutterFlow
         }
 
 
-        public override CoverManager CoverManager {
-            get { return base.CoverManager; }
-            set {
-                if (coverManager!=null)
-                    coverManager.TextureSizeChanged -= HandleTextureSizeChanged;
-                base.CoverManager = value;
-                if (coverManager!=null)
-                    coverManager.TextureSizeChanged += HandleTextureSizeChanged;
-            }
-        }
-
-		private NeedPixbuf getDefaultPb;
+		private NeedSurface getDefaultSurface;
 		
 		protected bool shifted_outwards;
 		#endregion
 		
 		#region Initialization	
-		public ClutterFlowActor (CoverManager cover_manager, NeedPixbuf getDefaultPb) : base (cover_manager)
+		public ClutterFlowActor (CoverManager cover_manager, NeedSurface getDefaultSurface) : base (cover_manager)
 		{
-			this.getDefaultPb = getDefaultPb;
+			this.getDefaultSurface = getDefaultSurface;
 
             this.ParentSet += HandleParentSet;
 			this.LeaveEvent += HandleLeaveEvent;
 			this.ButtonPressEvent += HandleButtonPressEvent;
 			this.ButtonReleaseEvent += HandleButtonReleaseEvent;
-			
+
+            CoverManager.TextureSizeChanged += HandleTextureSizeChanged;
+
 			IsSetup = SetupStatics ();
 			SetupActors ();
 		}
 
-        ~ ClutterFlowActor ()
-        {
-            Dispose ();
-        }
         public sealed override void Dispose ()
         {
-            base.Dispose ();
-
             this.ParentSet -= HandleParentSet;
 			this.LeaveEvent -= HandleLeaveEvent;
             this.ButtonPressEvent -= HandleButtonPressEvent;
             this.ButtonReleaseEvent -= HandleButtonReleaseEvent;
-            getDefaultPb = null;
+
+            CoverManager.TextureSizeChanged -= HandleTextureSizeChanged;
+            getDefaultSurface = null;
 
             DisposeStatics ();
+
+            base.Dispose ();
         }
 		protected virtual bool SetupStatics ()
 		{
 			if (textureHolder==null)
-				textureHolder = new TextureHolder(CoverManager, GetDefaultPb);
+				textureHolder = new TextureHolder(CoverManager, getDefaultSurface);
 			return true;
 		}
         protected virtual void DisposeStatics ()
@@ -465,7 +434,7 @@ namespace ClutterFlow
 		protected bool has_shader = false;
 		protected virtual void TryShading ()
 		{
-			if (CanUseShader/*Clutter.Feature.Available (Clutter.FeatureFlags.ShadersGlsl)*/) {
+			/*if (CanUseShader) {
 				shader = new Clutter.Shader ();
 				shader.VertexSource = @"
 					attribute vec4 gl_Color;
@@ -497,22 +466,22 @@ namespace ClutterFlow
 				OnAngleChanged (this, new GLib.NotifyArgs());
 				OnAnchorChanged (this, new GLib.NotifyArgs());
 				has_shader = true;
-			}
+			}*/
 		}
 		
 		protected virtual void SetupCover ()
 		{
 			if (cover==null) {
-				cover = new Clutter.Texture();				
+				cover = new Clutter.CairoTexture((uint) CoverManager.TextureSize, (uint) CoverManager.TextureSize*2);
 				Add (cover);
 				cover.Show ();
 				cover.Realize ();
 			}
-			cover.SetSize (coverManager.Behaviour.CoverWidth, coverManager.Behaviour.CoverWidth*2);
+			cover.SetSize (CoverManager.Behaviour.CoverWidth, CoverManager.Behaviour.CoverWidth*2);
 			cover.SetPosition (0, 0);
 			cover.Opacity = 255;
 			
-			SwappedToDefault = true;
+			//SwappedToDefault = true;
 		}
 		
 		protected virtual void OnOpacityChanged (object sender, NotifyArgs args)
@@ -542,7 +511,7 @@ namespace ClutterFlow
 					else
 						delayed_shade_swap = true;
 				}
-				shade.SetSize (coverManager.Behaviour.CoverWidth, coverManager.Behaviour.CoverWidth*2);
+				shade.SetSize (CoverManager.Behaviour.CoverWidth, CoverManager.Behaviour.CoverWidth*2);
 				shade.SetPosition (0, 0);
 				shade.Opacity = 255;
 	
@@ -552,9 +521,9 @@ namespace ClutterFlow
 		#endregion
 
 		#region Texture Handling
-		protected virtual Gdk.Pixbuf GetDefaultPb ()
+		protected virtual Cairo.ImageSurface GetDefaultSurface ()
 		{
-			return (getDefaultPb!=null) ? getDefaultPb() : null;
+			return (getDefaultSurface!=null) ? getDefaultSurface() : null;
 		}
 
 		protected virtual void HandleTextureSizeChanged(object sender, EventArgs e)
@@ -580,7 +549,7 @@ namespace ClutterFlow
 			if (CoverManager.CurrentCover!=this)
 				CoverManager.NewCurrentCover += HandleNewCurrentCover;
 			else
-				coverManager.Behaviour.CreateClickedCloneAnimation (this);
+				CoverManager.Behaviour.CreateClickedCloneAnimation (this);
 			return this;
 		}
 		
@@ -588,7 +557,7 @@ namespace ClutterFlow
 		{
 			if (CoverManager.CurrentCover==this) {
 				CoverManager.NewCurrentCover -= HandleNewCurrentCover;
-				coverManager.Behaviour.CreateClickedCloneAnimation (this, CoverManager.MaxAnimationSpan);
+				CoverManager.Behaviour.CreateClickedCloneAnimation (this, CoverManager.MaxAnimationSpan);
 			}
 		}
 
@@ -625,7 +594,7 @@ namespace ClutterFlow
         {
             if (this.Stage != null) {
                 if (delayed_shade_swap) SetShadeSwap ();
-                if (delayed_cover_swap) SetCoverSwap ();
+                //if (delayed_cover_swap) SetCoverSwap ();
             }
         }
 
diff --git a/src/ClutterFlow/ClutterFlow/ClutterFlowFixedActor.cs b/src/ClutterFlow/ClutterFlow/ClutterFlowFixedActor.cs
index 9ecf092..0b0be49 100644
--- a/src/ClutterFlow/ClutterFlow/ClutterFlowFixedActor.cs
+++ b/src/ClutterFlow/ClutterFlow/ClutterFlowFixedActor.cs
@@ -38,11 +38,11 @@ namespace ClutterFlow
     {
 
         #region Fields
-        protected Clutter.Texture texture;
-        public Clutter.Texture Texture {
+        protected Clutter.CairoTexture texture;
+        public Clutter.CairoTexture Texture {
             get {
                 if (texture==null) {
-                    texture = new Clutter.Texture ();
+                    texture = new Clutter.CairoTexture ((uint) CoverManager.Behaviour.CoverWidth, (uint) CoverManager.Behaviour.CoverWidth*2);
                     Add (texture);
                     texture.Show ();
                 }
@@ -93,8 +93,13 @@ namespace ClutterFlow
 			SetAnchorPoint (0, 0);
 				
             if (pb!=null) {
-                GtkUtil.TextureSetFromPixbuf (Texture, MakeReflection(pb));
-                pb.Dispose ();
+				Cairo.Context context = Texture.Create();
+				
+				Gdk.CairoHelper.SetSourcePixbuf(context, pb, 0, 0);
+				context.Paint();
+				
+				((IDisposable) context.Target).Dispose ();
+				((IDisposable) context).Dispose ();
             }
 
 			Texture.SetPosition (0, 0);
diff --git a/src/ClutterFlow/ClutterFlow/ClutterFlowSlider.cs b/src/ClutterFlow/ClutterFlow/ClutterFlowSlider.cs
index 5efb3ae..7b40d00 100755
--- a/src/ClutterFlow/ClutterFlow/ClutterFlowSlider.cs
+++ b/src/ClutterFlow/ClutterFlow/ClutterFlowSlider.cs
@@ -38,23 +38,9 @@ namespace ClutterFlow.Slider
 	public class ClutterFlowSlider : Group
 	{
 		#region Fields
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public CoverManager CoverManager {
 			get { return coverManager; }
-			set {
-				if (value!=coverManager) {
-					if (coverManager!=null) {
-						coverManager.CoversChanged -= HandleCoversChanged;
-						coverManager.TargetIndexChanged -= HandleTargetIndexChanged;
-					}
-					coverManager = value;
-					if (coverManager!=null) {
-						coverManager.CoversChanged += HandleCoversChanged;
-						coverManager.TargetIndexChanged += HandleTargetIndexChanged;
-						coverManager.LetterLookupChanged += HandleLetterLookupChanged;
-					}
-				}
-			}
 		}
 		
 		protected ClutterSlider slider;
@@ -66,14 +52,33 @@ namespace ClutterFlow.Slider
 		public ClutterFlowSlider (float width, float height, CoverManager coverManager)
 		{
 			this.IsReactive = true;
-			this.CoverManager = coverManager;
-			this.SetSize (width, height);
+			this.coverManager = coverManager;
+            CoverManager.CoversChanged += HandleCoversChanged;
+            CoverManager.TargetIndexChanged += HandleTargetIndexChanged;
+            CoverManager.LetterLookupChanged += HandleLetterLookupChanged;
+
+            this.SetSize (width, height);
 			this.EnterEvent += HandleEnterEvent;
 			this.LeaveEvent += HandleLeaveEvent;
 
 			InitChildren ();
 			Update ();
 		}
+
+        public override void Dispose ()
+        {
+            CoverManager.CoversChanged -= HandleCoversChanged;
+            CoverManager.TargetIndexChanged -= HandleTargetIndexChanged;
+            CoverManager.LetterLookupChanged -= HandleLetterLookupChanged;
+
+            EnterEvent += HandleEnterEvent;
+            LeaveEvent += HandleLeaveEvent;
+
+            slider.Dispose ();
+            alphabet.Dispose ();
+
+            base.Dispose ();
+        }
 		
 		protected virtual void InitChildren ()
 		{
diff --git a/src/ClutterFlow/ClutterFlow/ClutterFlowTimeline.cs b/src/ClutterFlow/ClutterFlow/ClutterFlowTimeline.cs
index ff3403c..d711085 100755
--- a/src/ClutterFlow/ClutterFlow/ClutterFlowTimeline.cs
+++ b/src/ClutterFlow/ClutterFlow/ClutterFlowTimeline.cs
@@ -261,11 +261,10 @@ namespace ClutterFlow
         		return retval;
         	}
         }
-        		
-        protected CoverManager coverManager;
+
+        private CoverManager coverManager;
         public CoverManager CoverManager {
-        	get { return coverManager; }
-        	set { coverManager = value; }
+            get { return coverManager; }
         }
 
         public override uint Target {
@@ -285,19 +284,11 @@ namespace ClutterFlow
                 throw new System.NotImplementedException();
             }
         }
-
-
-
         #endregion
 
         public ClutterFlowTimeline (CoverManager coverManager) : base((uint) coverManager.TotalCovers, 1 / (double) CoverManager.MaxAnimationSpan)
         {
-            this.CoverManager = coverManager;
-        }
-        public override void Dispose ()
-        {
-            CoverManager = null;
-            base.Dispose ();
+            this.coverManager = coverManager;
         }
     }
 }
diff --git a/src/ClutterFlow/ClutterFlow/ClutterHelper.cs b/src/ClutterFlow/ClutterFlow/ClutterHelper.cs
index c093d3d..4992e46 100755
--- a/src/ClutterFlow/ClutterFlow/ClutterHelper.cs
+++ b/src/ClutterFlow/ClutterFlow/ClutterHelper.cs
@@ -52,7 +52,7 @@ namespace ClutterFlow
 		[DllImport ("libclutter-glx-1.0.so.0")]
 		private static extern void clutter_actor_box_from_vertices (ref ActorBox box, IntPtr[] vtx);
 		
-		[DllImport("libGL.so", EntryPoint = "glGetString")]
+		/*[DllImport("libGL.so", EntryPoint = "glGetString")]
 		private static extern IntPtr glGetString(int s);
 
 		public static string OpenGLGetString (int i)
@@ -68,7 +68,7 @@ namespace ClutterFlow
             else {
 				return extensions.Contains (extension);
 			}
-		}
+		}*/
 		
 		
 		public unsafe static ActorBox GetAbsAllocationBox (Actor actor)
diff --git a/src/ClutterFlow/ClutterFlow/CoverCaption.cs b/src/ClutterFlow/ClutterFlow/CoverCaption.cs
index 1eb677b..d8f1a2c 100755
--- a/src/ClutterFlow/ClutterFlow/CoverCaption.cs
+++ b/src/ClutterFlow/ClutterFlow/CoverCaption.cs
@@ -45,36 +45,29 @@ namespace ClutterFlow.Captions
 				}
 			}
 		}
-
-		public override CoverManager CoverManager {
-			get { return coverManager; }
-			set {
-				if (value!=coverManager) {
-					if (coverManager!=null) {
-						coverManager.NewCurrentCover -= HandleNewCurrentCover;
-						coverManager.TargetIndexChanged -= HandleTargetIndexChanged;
-						coverManager.CoversChanged -= HandleCoversChanged;
-					}
-					coverManager = value;
-					if (coverManager!=null) {
-						coverManager.NewCurrentCover += HandleNewCurrentCover;
-						coverManager.TargetIndexChanged += HandleTargetIndexChanged;
-						coverManager.CoversChanged += HandleCoversChanged;
-					}
-				}
-			}
-		}
 		#endregion
 		
 		public CoverCaption (CoverManager coverManager, string font_name, Color color) : base (coverManager, font_name, color)
 		{
+            CoverManager.NewCurrentCover += HandleNewCurrentCover;
+            CoverManager.TargetIndexChanged += HandleTargetIndexChanged;
+            CoverManager.CoversChanged += HandleCoversChanged;
 		}
 
+        public override void Dispose ()
+        {
+            CoverManager.NewCurrentCover -= HandleNewCurrentCover;
+            CoverManager.TargetIndexChanged -= HandleTargetIndexChanged;
+            CoverManager.CoversChanged -= HandleCoversChanged;
+
+            base.Dispose ();
+        }
+
 		#region Methods
 
 		public override void Update ()
 		{
-			SetTextFromCover (coverManager.CurrentCover);
+			SetTextFromCover (CoverManager.CurrentCover);
 			base.Update ();
 		}
 		
@@ -82,7 +75,7 @@ namespace ClutterFlow.Captions
 		{
 			if (Stage!=null) {
 				SetAnchorPoint (Width*0.5f, Height*0.5f);
-				SetPosition(coverManager.Behaviour.CenterX, Math.Max(coverManager.Behaviour.CenterY - coverManager.Behaviour.CoverWidth, Height*0.6f));
+				SetPosition(CoverManager.Behaviour.CenterX, Math.Max(CoverManager.Behaviour.CenterY - CoverManager.Behaviour.CoverWidth, Height*0.6f));
 			}
 		}
 
diff --git a/src/ClutterFlow/ClutterFlow/CoverManager.cs b/src/ClutterFlow/ClutterFlow/CoverManager.cs
index bda4924..881efa6 100755
--- a/src/ClutterFlow/ClutterFlow/CoverManager.cs
+++ b/src/ClutterFlow/ClutterFlow/CoverManager.cs
@@ -114,17 +114,16 @@ namespace ClutterFlow
 			letter_lookup = new Dictionary<AlphabetChars, int>();
 			foreach (AlphabetChars key in Enum.GetValues(typeof(AlphabetChars)))
 				letter_lookup.Add(key, -1);
-			Console.WriteLine ("ResetLetterLookup called, letter_lookup is " + (letter_lookup == null ? "null" : "not null"));
 		}
 		public void UpdateLetterLookup (ClutterFlowBaseActor actor) {
-			string label = actor.SortLabel.ToUpper ();
+			string label = actor.SortLabel.ToUpper ().Normalize (System.Text.NormalizationForm.FormKD);
 			char letter = label.Length>0 ? char.Parse(label.Substring (0,1)) : '?';
-			AlphabetChars key;
+            AlphabetChars key;
 			if (char.IsLetter(letter))
 				key = (AlphabetChars) letter;
 			else
-				key = AlphabetChars.unkown;
-			if (letter_lookup[key]==-1)
+				key = AlphabetChars.unknown;
+			if (letter_lookup.ContainsKey (key) && letter_lookup[key] == -1)
 				letter_lookup[key] = actor.Index;
 		}
 		
@@ -245,6 +244,10 @@ namespace ClutterFlow
 
         public override void Dispose ()
         {
+            if (reload_timeout > 0) {
+                GLib.Source.Remove (reload_timeout);
+            }
+
             ActorLoader.Dispose ();
             Behaviour.Dispose ();
             timeline.Dispose ();
@@ -282,12 +285,12 @@ namespace ClutterFlow
 			}
 		}
 		
-		private int reload_timeout = -1;
+		private uint reload_timeout = 0;
 		internal void ReloadCovers ()
 		{
-			if (reload_timeout!=-1)
-				GLib.Source.Remove((uint) reload_timeout);
-			reload_timeout = (int) GLib.Timeout.Add (MaxAnimationSpan, new GLib.TimeoutHandler (reload_covers));
+			if (reload_timeout > 0)
+				GLib.Source.Remove(reload_timeout);
+			reload_timeout = GLib.Timeout.Add (MaxAnimationSpan, new GLib.TimeoutHandler (reload_covers));
 		}
 
      	private bool reload_covers ()
diff --git a/src/ClutterFlow/ClutterFlow/FlowBehaviour.cs b/src/ClutterFlow/ClutterFlow/FlowBehaviour.cs
index 15ce94e..01db491 100755
--- a/src/ClutterFlow/ClutterFlow/FlowBehaviour.cs
+++ b/src/ClutterFlow/ClutterFlow/FlowBehaviour.cs
@@ -193,35 +193,27 @@ namespace ClutterFlow
 			get { return coverManager.Timeline.Progress; }
 		}
 		
-		protected CoverManager coverManager;
+		private CoverManager coverManager;
 		public CoverManager CoverManager {
 			get { return coverManager; }
-			set {
-				if (value!=coverManager) {
-					if (coverManager!=null) {
-						coverManager.VisibleCoversChanged -= HandleVisibleCoversChanged;
-						coverManager.TargetIndexChanged -= HandleTargetIndexChanged;
-						coverManager.Timeline.NewFrame -= HandleNewFrame;
-					}
-					coverManager = value;
-					if (coverManager!=null) {
-						coverManager.VisibleCoversChanged += HandleVisibleCoversChanged;
-						coverManager.TargetIndexChanged += HandleTargetIndexChanged;
-						coverManager.Timeline.NewFrame += HandleNewFrame;
-					}
-				}
-			}
 		}
 		#endregion
 
         #region Initialisation
 		public FlowBehaviour (CoverManager coverManager)
 		{
-			this.CoverManager = coverManager;
+			this.coverManager = coverManager;
+            CoverManager.VisibleCoversChanged += HandleVisibleCoversChanged;
+            CoverManager.TargetIndexChanged += HandleTargetIndexChanged;
+            CoverManager.Timeline.NewFrame += HandleNewFrame;
 		}
+
         public virtual void Dispose ()
         {
-            CoverManager = null;
+            CoverManager.VisibleCoversChanged -= HandleVisibleCoversChanged;
+            CoverManager.TargetIndexChanged -= HandleTargetIndexChanged;
+            CoverManager.Timeline.NewFrame -= HandleNewFrame;
+
             if (fadeInAnim!=null) {
                 fadeInAnim.CompleteAnimation ();
                 fadeInAnim = null;
diff --git a/src/ClutterFlow/ClutterFlow/Makefile.in b/src/ClutterFlow/ClutterFlow/Makefile.in
index a3663fc..33b1294 100644
--- a/src/ClutterFlow/ClutterFlow/Makefile.in
+++ b/src/ClutterFlow/ClutterFlow/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -386,7 +387,7 @@ SOURCES = \
 @ENABLE_CLUTTERFLOW_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_CLUTTERFLOW_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_CLUTTERFLOW_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_CLUTTERFLOW_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_CLUTTERFLOW_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_CLUTTERFLOW_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_CLUTTERFLOW_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -620,6 +621,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_CLUTTERFLOW_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_CLUTTERFLOW_TRUE@check: test
+
 @ENABLE_CLUTTERFLOW_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_CLUTTERFLOW_TRUE at run: 
diff --git a/src/ClutterFlow/ClutterFlow/TrackCaption.cs b/src/ClutterFlow/ClutterFlow/TrackCaption.cs
index 2fc632d..f07c383 100755
--- a/src/ClutterFlow/ClutterFlow/TrackCaption.cs
+++ b/src/ClutterFlow/ClutterFlow/TrackCaption.cs
@@ -45,11 +45,6 @@ namespace ClutterFlow.Captions
 				}
 			}
 		}
-
-		public override CoverManager CoverManager {
-			get { return coverManager; }
-			set { coverManager = value;	}
-		}
 		#endregion
 		
 		public TrackCaption (CoverManager coverManager, string font_name, Color color) : base (coverManager, font_name, color)
@@ -77,7 +72,7 @@ namespace ClutterFlow.Captions
 		{
 			if (Stage!=null) {
 				SetAnchorPoint (Width*0.5f, Height*0.5f);
-				SetPosition(coverManager.Behaviour.CenterX, Math.Max(coverManager.Behaviour.CenterY - coverManager.Behaviour.CoverWidth + Height*3, Height*3.6f));
+				SetPosition(CoverManager.Behaviour.CenterX, Math.Max(CoverManager.Behaviour.CenterY - CoverManager.Behaviour.CoverWidth + Height*3, Height*3.6f));
 			}
 		}
 
diff --git a/src/ClutterFlow/Makefile.in b/src/ClutterFlow/Makefile.in
index 8a9872c..75f06e5 100644
--- a/src/ClutterFlow/Makefile.in
+++ b/src/ClutterFlow/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -128,8 +128,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -193,8 +195,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -238,6 +238,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -272,12 +273,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/CoverWallpaper/Makefile.in b/src/CoverWallpaper/Makefile.in
index 4416305..b98d74c 100644
--- a/src/CoverWallpaper/Makefile.in
+++ b/src/CoverWallpaper/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -364,7 +365,7 @@ RESOURCES = Banshee.CoverWallpaper.addin.xml
 @ENABLE_COVERWALLPAPER_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_COVERWALLPAPER_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_COVERWALLPAPER_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_COVERWALLPAPER_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_COVERWALLPAPER_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_COVERWALLPAPER_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_COVERWALLPAPER_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -598,6 +599,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_COVERWALLPAPER_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_COVERWALLPAPER_TRUE@check: test
+
 @ENABLE_COVERWALLPAPER_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_COVERWALLPAPER_TRUE at run: 
diff --git a/src/Jamendo/Banshee.Jamendo/JamendoDownloadManager.cs b/src/Jamendo/Banshee.Jamendo/JamendoDownloadManager.cs
new file mode 100644
index 0000000..1a0f192
--- /dev/null
+++ b/src/Jamendo/Banshee.Jamendo/JamendoDownloadManager.cs
@@ -0,0 +1,138 @@
+//
+// JamendoDownloadManager.cs
+//
+// Author:
+//   Bertrand Lorentz <bertrand.lorentz at gmail.com>
+//
+// Copyright (c) 2010 Bertrand Lorentz
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Zip;
+using Mono.Addins;
+
+using Hyena;
+using Hyena.Downloader;
+
+using Banshee.Library;
+using Banshee.ServiceStack;
+
+namespace Banshee.Jamendo
+{
+    public class JamendoDownloadManager : DownloadManager
+    {
+        private string mimetype;
+        private DownloadManagerJob job;
+        private LibraryImportManager import_manager;
+
+        public static void Download (string remote_uri, string mimetype)
+        {
+            try {
+                new JamendoDownloadManager (remote_uri, mimetype);
+                Log.Information ("Downloading from Jamendo", remote_uri);
+            } catch (Exception e) {
+                Log.Exception ("Invalid Jamendo file: " + remote_uri, e);
+                Log.Error ("Invalid Jamendo downloader file", remote_uri, true);
+            }
+        }
+
+        public JamendoDownloadManager (string remote_uri, string mimetype)
+        {
+            this.mimetype = mimetype;
+            // TODO: Allow the user to cancel the download
+            job = new DownloadManagerJob (this) {
+                Title = AddinManager.CurrentLocalizer.GetString ("Jamendo Downloads"),
+                Status = AddinManager.CurrentLocalizer.GetString ("Contacting..."),
+                IconNames = new string [] { "jamendo" }
+            };
+            job.Finished += delegate { ServiceManager.SourceManager.MusicLibrary.NotifyUser (); };
+
+            ServiceManager.Get<JobScheduler> ().Add (job);
+
+            import_manager = new LibraryImportManager (true) {
+                KeepUserJobHidden = true,
+                Debug = true,
+                Threaded = false
+            };
+
+            var downloader = new HttpFileDownloader () {
+                Uri = new Uri (remote_uri),
+                TempPathRoot = Path.Combine (Path.GetTempPath (), "banshee-jamendo-downloader"),
+                FileExtension = mimetype == "application/zip" ? "zip" : "mp3"
+            };
+            QueueDownloader (downloader);
+        }
+
+        protected override void OnDownloaderStarted (HttpDownloader downloader)
+        {
+            base.OnDownloaderStarted (downloader);
+            Log.InformationFormat ("Starting to download {0}", downloader.Name);
+        }
+
+        protected override void OnDownloaderFinished (HttpDownloader downloader)
+        {
+            var file_downloader = (HttpFileDownloader)downloader;
+            Log.InformationFormat ("Finished downloading {0}", file_downloader.LocalPath);
+            job.Status = AddinManager.CurrentLocalizer.GetString ("Importing...");
+            job.Progress = 0.0;
+
+            if (mimetype == "application/zip") {
+                string unzip_dir = String.Concat (file_downloader.LocalPath, Path.GetRandomFileName ());
+                Directory.CreateDirectory (unzip_dir);
+
+                using (ZipInputStream s = new ZipInputStream (File.OpenRead (file_downloader.LocalPath))) {
+                    ZipEntry zip_entry;
+                    while ((zip_entry = s.GetNextEntry ()) != null) {
+                        string filename = Path.GetFileName (zip_entry.Name);
+                        string extracted_file = Paths.Combine (unzip_dir, filename);
+
+                        if (filename != String.Empty) {
+                            using (FileStream streamWriter = File.Create (extracted_file)) {
+                                int size = 2048;
+                                byte[] data = new byte[size];
+                                while (true) {
+                                    size = s.Read (data, 0, data.Length);
+                                    if (size > 0) {
+                                        streamWriter.Write (data, 0, size);
+                                    } else {
+                                        break;
+                                    }
+                                }
+                            }
+                            Log.DebugFormat ("Unzipped {0}", extracted_file);
+                            import_manager.Enqueue (extracted_file);
+                        }
+                    }
+                }
+                Directory.Delete (unzip_dir, true);
+            } else {
+                if (import_manager.ImportTrack (file_downloader.LocalPath) != null) {
+                    import_manager.NotifyAllSources ();
+                }
+            }
+            File.Delete (file_downloader.LocalPath);
+
+            base.OnDownloaderFinished (downloader);
+        }
+    }
+}
+
diff --git a/src/LiveRadio/Banshee.LiveRadio/LiveRadioPlugins/LiveRadioPluginError.cs b/src/Jamendo/Banshee.Jamendo/JamendoSource.cs
similarity index 62%
copy from src/LiveRadio/Banshee.LiveRadio/LiveRadioPlugins/LiveRadioPluginError.cs
copy to src/Jamendo/Banshee.Jamendo/JamendoSource.cs
index 5f3b4aa..0cf099b 100644
--- a/src/LiveRadio/Banshee.LiveRadio/LiveRadioPlugins/LiveRadioPluginError.cs
+++ b/src/Jamendo/Banshee.Jamendo/JamendoSource.cs
@@ -1,10 +1,10 @@
 //
-// LiveRadioPluginError.cs
+// JamendoSource.cs
 //
 // Authors:
-//   Frank Ziegler <funtastix at googlemail.com>
+//   Janez Troha <janez.troha at gmail.com>
 //
-// Copyright (C) 2010 Frank Ziegler
+// Copyright (C) 2010 Janez Troha
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,34 +26,29 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
+using Banshee.WebSource;
 
-namespace Banshee.LiveRadio.Plugins
+namespace Banshee.Jamendo
 {
-
-    /// <summary>
-    /// A class capsuling an error message object
-    /// </summary>
-    public class LiveRadioPluginError
+    public class JamendoSource : Banshee.WebSource.WebSource
     {
+        public JamendoWebBrowserShell Shell { get; private set; }
+        private JamendoView view;
 
-        private string short_message;
-        private string long_message;
-
-        public LiveRadioPluginError (string short_message, string long_message)
+        public JamendoSource () : base("Jamendo", 190, "Jamendo")
         {
-            this.short_message = short_message;
-            this.long_message = long_message;
+            Properties.SetString ("Icon.Name", "jamendo");
         }
 
-        public string Message
-        {
-            get { return short_message; }
+        // A count of 0 will be hidden in the source TreeView
+        public override int Count {
+            get { return 0; }
         }
 
-        public string LongMessage
+        protected override WebBrowserShell GetWidget ()
         {
-            get { return long_message; }
+            view = new JamendoView ();
+            return (Shell = new JamendoWebBrowserShell(view));
         }
     }
 }
diff --git a/src/Jamendo/Banshee.Jamendo/JamendoView.cs b/src/Jamendo/Banshee.Jamendo/JamendoView.cs
new file mode 100644
index 0000000..78f7d73
--- /dev/null
+++ b/src/Jamendo/Banshee.Jamendo/JamendoView.cs
@@ -0,0 +1,122 @@
+//
+// JamendoView.cs
+//
+// Authors:
+//   Janez Troha <janez.troha at gmail.com>
+//   Bertrand Lorentz <bertrand.lorentz at gmail.com>
+//
+// Copyright 2010 Janez Troha
+// Copyright 2010 Bertrand Lorentz
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Hyena;
+
+using Banshee.WebBrowser;
+using Banshee.WebSource;
+
+namespace Banshee.Jamendo
+{
+    public class JamendoView : Banshee.WebSource.WebView, IDisposable
+    {
+        public JamendoView ()
+        {
+            CanSearch = true;
+            FixupJavascriptUrl = "http://integrated-services.banshee.fm/jamendo/jamendo-fixup.js";
+
+            FullReload ();
+        }
+
+        private static bool IsPlaylistContentType (string contentType)
+        {
+            switch (contentType) {
+                case "audio/x-mpegurl":
+                case "application/xspf+xml":
+                    return true;
+            }
+
+            return false;
+        }
+
+        private static bool IsDownloadContentType (string contentType)
+        {
+            switch (contentType) {
+                // For single tracks
+                case "application/octet-stream":
+                // For album downloads
+                case "application/zip":
+                    return true;
+            }
+
+            return false;
+        }
+
+        protected override OssiferNavigationResponse OnNavigationPolicyDecisionRequested (string uri)
+        {
+            return base.OnNavigationPolicyDecisionRequested (uri);
+        }
+
+        protected override OssiferNavigationResponse OnMimeTypePolicyDecisionRequested (string mimetype)
+        {
+            // We only explicitly accept (render) text/html types, and only
+            // download what we can import or stream.
+            if (IsPlaylistContentType (mimetype) || IsDownloadContentType (mimetype)) {
+                return OssiferNavigationResponse.Download;
+            }
+
+            return base.OnMimeTypePolicyDecisionRequested (mimetype);
+        }
+
+        protected override string OnDownloadRequested (string mimetype, string uri, string suggestedFilename)
+        {
+            if (IsPlaylistContentType (mimetype)) {
+                Log.DebugFormat ("Streaming from Jamendo playlist : {0} ({1})", uri, mimetype);
+                // FIXME: Works only for single track and only once
+                Banshee.Streaming.RadioTrackInfo.OpenPlay (uri);
+                Banshee.ServiceStack.ServiceManager.PlaybackController.StopWhenFinished = true;
+                return null;
+            } else if (IsDownloadContentType (mimetype)) {
+                JamendoDownloadManager.Download (uri, mimetype);
+                return null;
+            }
+
+            return null;
+        }
+
+        public override void GoHome ()
+        {
+            LoadUri (GetActionUrl (""));
+        }
+
+        public override void GoSearch (string query)
+        {
+            LoadUri (new Uri (GetActionUrl ("en/search/all/" + query)).AbsoluteUri);
+        }
+
+        public string GetActionUrl (string action)
+        {
+            return "http://jamendo.com/" + action;
+        }
+    }
+}
+
diff --git a/src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.DBus/IMetadataProvider.cs b/src/Jamendo/Banshee.Jamendo/JamendoWebBrowserShell.cs
similarity index 68%
copy from src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.DBus/IMetadataProvider.cs
copy to src/Jamendo/Banshee.Jamendo/JamendoWebBrowserShell.cs
index b0c14c4..01b8d62 100644
--- a/src/Telepathy/Banshee.Telepathy/Banshee.Telepathy.DBus/IMetadataProvider.cs
+++ b/src/Jamendo/Banshee.Jamendo/JamendoWebBrowserShell.cs
@@ -1,10 +1,10 @@
 //
-// IMetadataProvider.cs
+// JamendoWebBrowserShell.cs
 //
-// Author:
-//   Neil Loknath <neil.loknath at gmail.com>
+// Authors:
+//   Janez Troha <janez.troha at gmail.com>
 //
-// Copyright (C) 2009 Neil Loknath
+// Copyright (C) 2010 Janez Troha
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,22 +27,19 @@
 //
 
 using System;
-using System.Collections.Generic;
-using NDesk.DBus;
+using Mono.Addins;
 
-namespace Banshee.Telepathy.DBus
+namespace Banshee.Jamendo
 {
-
-    [Interface ("org.bansheeproject.Banshee.Telepathy.MetadataProvider")]
-    public interface IMetadataProvider
+    public class JamendoWebBrowserShell : Banshee.WebSource.WebBrowserShell
     {
-        event ChunkReadyHandler ChunkReady;
-        event SingleChunkReadyHandler SingleChunkReady;
-
-        void GetChunks (int chunk_size);
-        void GetChunk (long timestamp, int sequence_num);
+        public JamendoView JamendoView { get; private set; }
 
-        void Destroy ();
+        public JamendoWebBrowserShell (JamendoView view) : base("Jamendo", view)
+        {
+            JamendoView = view;
+            SearchEntry.EmptyMessage = String.Format (AddinManager.CurrentLocalizer.GetString ("Search Jamendo"));
+            ShowAll ();
+        }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/Ampache/Ampache.addin.xml b/src/Jamendo/Jamendo.addin.xml
old mode 100755
new mode 100644
similarity index 52%
copy from src/Ampache/Ampache.addin.xml
copy to src/Jamendo/Jamendo.addin.xml
index f39ee34..b850a8b
--- a/src/Ampache/Ampache.addin.xml
+++ b/src/Jamendo/Jamendo.addin.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Addin
-    id="Banshee.Ampache"
+    id="Banshee.Jamendo"
     version="1.0"
     compatVersion="1.0"
-    copyright="Copyright © 2010 John Moore. Licensed under the MIT X11 license."
-    name="Ampache"
+    copyright="Copyright © 2010 Janez Troha. Licensed under the MIT X11 license."
+    name="Jamendo"
     category="Community Extensions"
-    description="Browse and play your remote music with Ampache."
-    author="John Moore"
-    url="http://banshee.fm/"
+    description="Download and listen to over 20,000 albums. Play or download directly to discover and share new artists. All content is Creative Commons or Art Libre licensed."
+    author="Janez Troha"
+    url="http://banshee-project.org/"
     defaultEnabled="false">
 
   <Localizer type="Gettext" catalog="banshee-community-extensions" location="../../../share/locale"/>
@@ -19,8 +19,7 @@
   </Dependencies>
 
   <Extension path="/Banshee/SourceManager/Source">
-    <Source class="Banshee.Ampache.AmpacheSource"/>
+    <Source class="Banshee.Jamendo.JamendoSource"/>
   </Extension>
 
 </Addin>
-
diff --git a/src/Jamendo/Makefile.am b/src/Jamendo/Makefile.am
new file mode 100644
index 0000000..0b067fd
--- /dev/null
+++ b/src/Jamendo/Makefile.am
@@ -0,0 +1,14 @@
+ASSEMBLY = Banshee.Jamendo
+LINK = $(BANSHEE_LIBS) $(BANSHEE_WEBBROWSER_LIBS) -r:ICSharpCode.SharpZipLib
+
+SOURCES =  \
+	Banshee.Jamendo/JamendoDownloadManager.cs \
+	Banshee.Jamendo/JamendoSource.cs \
+	Banshee.Jamendo/JamendoView.cs \
+	Banshee.Jamendo/JamendoWebBrowserShell.cs
+
+RESOURCES =  \
+	Jamendo.addin.xml \
+	ThemeIcons/22x22/categories/jamendo.png
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/UbuntuOneMusicStore/Makefile.in b/src/Jamendo/Makefile.in
similarity index 78%
rename from src/UbuntuOneMusicStore/Makefile.in
rename to src/Jamendo/Makefile.in
index 0550577..5fc255a 100644
--- a/src/UbuntuOneMusicStore/Makefile.in
+++ b/src/Jamendo/Makefile.in
@@ -38,8 +38,8 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(top_srcdir)/build/build.environment.mk \
 	$(top_srcdir)/build/build.mk \
 	$(top_srcdir)/build/build.rules.mk
- at ENABLE_TESTS_TRUE@@ENABLE_U1MS_TRUE at am__append_1 = " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
-subdir = src/UbuntuOneMusicStore
+ at ENABLE_TESTS_TRUE@am__append_1 = " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
+subdir = src/Jamendo
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/ampache.m4 \
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -322,53 +323,58 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-ASSEMBLY = Banshee.UbuntuOneMusicStore
-LINK = $(BANSHEE_LIBS) $(UBUNTUONESHARP_LIBS) $(am__append_1)
-SOURCES = Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs
+ASSEMBLY = Banshee.Jamendo
+LINK = $(BANSHEE_LIBS) $(BANSHEE_WEBBROWSER_LIBS) \
+	-r:ICSharpCode.SharpZipLib $(am__append_1)
+SOURCES = \
+	Banshee.Jamendo/JamendoDownloadManager.cs \
+	Banshee.Jamendo/JamendoSource.cs \
+	Banshee.Jamendo/JamendoView.cs \
+	Banshee.Jamendo/JamendoWebBrowserShell.cs
+
 RESOURCES = \
-	Resources/ubuntuone.png \
-	UbuntuOneMusicStore.addin.xml
+	Jamendo.addin.xml \
+	ThemeIcons/22x22/categories/jamendo.png
 
 
 # Initializers
- at ENABLE_U1MS_TRUE@MONO_BASE_PATH = 
- at ENABLE_U1MS_TRUE@MONO_ADDINS_PATH = 
+MONO_BASE_PATH = 
+MONO_ADDINS_PATH = 
 
 # All extensions are libraries
- at ENABLE_U1MS_TRUE@TARGET = library
- at ENABLE_U1MS_TRUE@DIR_BIN = $(top_builddir)/bin
+TARGET = library
+DIR_BIN = $(top_builddir)/bin
 
 # Install Paths
- at ENABLE_U1MS_TRUE@DEFAULT_INSTALL_DIR = $(pkglibdir)
- at ENABLE_U1MS_TRUE@EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
- at ENABLE_U1MS_TRUE@UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
- at ENABLE_U1MS_TRUE@BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
- at ENABLE_U1MS_TRUE@SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES)) \
- at ENABLE_U1MS_TRUE@	$(top_srcdir)/src/AssemblyInfo.cs
- at ENABLE_U1MS_TRUE@RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
- at ENABLE_U1MS_TRUE@RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
- at ENABLE_U1MS_TRUE@	-resource:$(resource),$(notdir $(resource)))
-
- at ENABLE_U1MS_TRUE@INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
- at ENABLE_U1MS_TRUE@THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
- at ENABLE_U1MS_TRUE@THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
- at ENABLE_U1MS_TRUE@ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
- at ENABLE_U1MS_TRUE@ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
- at ENABLE_U1MS_TRUE@INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
- at ENABLE_TESTS_TRUE@@ENABLE_U1MS_TRUE at ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
- at ENABLE_U1MS_TRUE@FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
- at ENABLE_U1MS_TRUE@DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
- at ENABLE_U1MS_TRUE@OUTPUT_FILES = \
- at ENABLE_U1MS_TRUE@	$(ASSEMBLY_FILE) \
- at ENABLE_U1MS_TRUE@	$(ASSEMBLY_FILE).mdb
-
- at ENABLE_U1MS_TRUE@moduledir = $(EXTENSION_DIR)
- at ENABLE_U1MS_TRUE@module_SCRIPTS = $(OUTPUT_FILES)
- at ENABLE_U1MS_FALSE@EXTRA_DIST = $(SOURCES) $(RESOURCES)
- at ENABLE_U1MS_TRUE@EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_U1MS_TRUE@CLEANFILES = $(OUTPUT_FILES)
- at ENABLE_U1MS_TRUE@DISTCLEANFILES = *.pidb
- at ENABLE_U1MS_TRUE@MAINTAINERCLEANFILES = Makefile.in
+DEFAULT_INSTALL_DIR = $(pkglibdir)
+EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
+UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
+BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
+SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES)) \
+	$(top_srcdir)/src/AssemblyInfo.cs
+RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
+RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
+	-resource:$(resource),$(notdir $(resource)))
+
+INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
+THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
+THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
+ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
+ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
+INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
+ at ENABLE_TESTS_TRUE@ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
+DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
+OUTPUT_FILES = \
+	$(ASSEMBLY_FILE) \
+	$(ASSEMBLY_FILE).mdb
+
+moduledir = $(EXTENSION_DIR)
+module_SCRIPTS = $(OUTPUT_FILES)
+EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
+CLEANFILES = $(OUTPUT_FILES) TestResult.xml
+DISTCLEANFILES = *.pidb
+MAINTAINERCLEANFILES = Makefile.in
 all: all-am
 
 .SUFFIXES:
@@ -381,9 +387,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/UbuntuOneMusicStore/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Jamendo/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/UbuntuOneMusicStore/Makefile
+	  $(AUTOMAKE) --foreign src/Jamendo/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -514,8 +520,6 @@ maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
 	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- at ENABLE_U1MS_FALSE@install-data-hook:
- at ENABLE_U1MS_FALSE@uninstall-hook:
 clean: clean-am
 
 clean-am: clean-generic clean-libtool mostlyclean-am
@@ -600,44 +604,55 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
- at ENABLE_U1MS_TRUE@all: $(ASSEMBLY_FILE) theme-icons
-
- at ENABLE_U1MS_TRUE@run: 
- at ENABLE_U1MS_TRUE@	@pushd $(top_builddir); \
- at ENABLE_U1MS_TRUE@	make run \
- at ENABLE_U1MS_TRUE@	popd;
-
- at ENABLE_U1MS_TRUE@build-debug:
- at ENABLE_U1MS_TRUE@	@echo $(DEP_LINK)
-
- at ENABLE_U1MS_TRUE@$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
-
- at ENABLE_U1MS_TRUE@$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
- at ENABLE_U1MS_TRUE@	@mkdir -p $(top_builddir)/bin
- at ENABLE_U1MS_TRUE@	$(MCS) \
- at ENABLE_U1MS_TRUE@		$(GMCS_FLAGS) \
- at ENABLE_U1MS_TRUE@		$(ENABLE_TESTS_FLAG) \
- at ENABLE_U1MS_TRUE@		$(ASSEMBLY_BUILD_FLAGS) \
- at ENABLE_U1MS_TRUE@		-debug -target:$(TARGET) -out:$@ \
- at ENABLE_U1MS_TRUE@		$(BUILD_DEFINES) \
- at ENABLE_U1MS_TRUE@		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
- at ENABLE_U1MS_TRUE@	@if [ -e $(srcdir)/$(notdir $@.config) ]; then \
- at ENABLE_U1MS_TRUE@		cp $(srcdir)/$(notdir $@.config) $(top_builddir)/bin; \
- at ENABLE_U1MS_TRUE@	fi;
- at ENABLE_U1MS_TRUE@	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
- at ENABLE_U1MS_TRUE@		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
- at ENABLE_U1MS_TRUE@	fi;
-
- at ENABLE_U1MS_TRUE@theme-icons: $(THEME_ICONS_SOURCE)
- at ENABLE_U1MS_TRUE@	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
-
- at ENABLE_U1MS_TRUE@install-data-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_U1MS_TRUE@	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_U1MS_TRUE@	$(EXTRA_INSTALL_DATA_HOOK)
-
- at ENABLE_U1MS_TRUE@uninstall-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_U1MS_TRUE@	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_U1MS_TRUE@	$(EXTRA_UNINSTALL_HOOK)
+ at ENABLE_TESTS_TRUE@test: $(ASSEMBLY_FILE)
+ at ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_TESTS_FALSE@test:
+
+check: test
+
+all: $(ASSEMBLY_FILE) theme-icons
+
+run: 
+	@pushd $(top_builddir); \
+	make run \
+	popd;
+
+build-debug:
+	@echo $(DEP_LINK)
+
+$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
+
+$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
+	@mkdir -p $(top_builddir)/bin
+	$(MCS) \
+		$(GMCS_FLAGS) \
+		$(ENABLE_TESTS_FLAG) \
+		$(ASSEMBLY_BUILD_FLAGS) \
+		-debug -target:$(TARGET) -out:$@ \
+		$(BUILD_DEFINES) \
+		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
+	@if [ -e $(srcdir)/$(notdir $@.config) ]; then \
+		cp $(srcdir)/$(notdir $@.config) $(top_builddir)/bin; \
+	fi;
+	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
+		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
+	fi;
+
+theme-icons: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+
+install-data-hook: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+	$(EXTRA_INSTALL_DATA_HOOK)
+
+uninstall-hook: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+	$(EXTRA_UNINSTALL_HOOK)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/Jamendo/ThemeIcons/22x22/categories/jamendo.png b/src/Jamendo/ThemeIcons/22x22/categories/jamendo.png
new file mode 100644
index 0000000..42ab38c
Binary files /dev/null and b/src/Jamendo/ThemeIcons/22x22/categories/jamendo.png differ
diff --git a/src/LCD/Makefile.in b/src/LCD/Makefile.in
index 1c0b2b1..0fbb1bd 100644
--- a/src/LCD/Makefile.in
+++ b/src/LCD/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -375,7 +376,7 @@ RESOURCES = \
 @ENABLE_LCD_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_LCD_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_LCD_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_LCD_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_LCD_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_LCD_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_LCD_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -609,6 +610,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_LCD_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_LCD_TRUE@check: test
+
 @ENABLE_LCD_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_LCD_TRUE at run: 
diff --git a/src/LastfmFingerprint/Banshee.LastfmFingerprint/FingerprintRequest.cs b/src/LastfmFingerprint/Banshee.LastfmFingerprint/FingerprintRequest.cs
index 8e95624..842cbe3 100644
--- a/src/LastfmFingerprint/Banshee.LastfmFingerprint/FingerprintRequest.cs
+++ b/src/LastfmFingerprint/Banshee.LastfmFingerprint/FingerprintRequest.cs
@@ -51,11 +51,6 @@ namespace Lastfm
         public FingerprintRequest ()
         {}
 
-        public Stream GetResponseStream ()
-        {
-            return response_stream;
-        }
-
         public void Send (TrackInfo track, byte[] fingerprint)
         {
             response_stream = Post (API_ROOT, BuildPostData (track), fingerprint);
@@ -73,12 +68,14 @@ namespace Lastfm
                 c = (char)(byte)response_stream.ReadByte ();
                 if (c == ' ')
                     break;
-                bld.Append(c);
+                bld.Append (c);
             }
-            int ret = -1;
-            if (Int32.TryParse(bld.ToString (), out ret))
+            int ret;
+            if (Int32.TryParse (bld.ToString (), out ret)) {
+                return ret;
+            } else {
                 return -2;
-            return ret;
+            }
         }
 
         private string EscapeUri (string str)
@@ -180,7 +177,7 @@ namespace Lastfm
                     response = (HttpWebResponse)e.Response;
                 }
                 Log.DebugFormat ("get response stream.");
-                return response.GetResponseStream ();
+                return response != null ? response.GetResponseStream () : null;
             }
         }
 
diff --git a/src/LastfmFingerprint/Banshee.LastfmFingerprint/LastfmFingerprintService.cs b/src/LastfmFingerprint/Banshee.LastfmFingerprint/LastfmFingerprintService.cs
index 194e4d8..41ff9a5 100644
--- a/src/LastfmFingerprint/Banshee.LastfmFingerprint/LastfmFingerprintService.cs
+++ b/src/LastfmFingerprint/Banshee.LastfmFingerprint/LastfmFingerprintService.cs
@@ -143,10 +143,9 @@ namespace Banshee.LastfmFingerprint
 
                         Log.DebugFormat ("Last.fm fingerprint id for {0} is {1}", track.TrackTitle, fpid);
 
-                        if (fpid != 0)
+                        if (fpid > 0) {
                             FetchMetadata (track, fpid);
-                        else
-                        {
+                        } else {
                             Log.WarningFormat ("Could not find fingerprint id for the track {0} !", track.TrackTitle);
                         }
     
@@ -199,9 +198,8 @@ namespace Banshee.LastfmFingerprint
                     track.ArtistName = (string)json_artist["name"];
                     track.ArtistMusicBrainzId = (string)json_artist["mbid"];
                 }
-                // TODO Get cover from URL in json_track["image"] array
-                // Maybe reuse MetadataServiceJob.SaveHttpStreamCover to fetch it
-                // but it's protected...
+
+                GetMoreInfo (track);
 
                 track.Save ();
 
@@ -210,6 +208,34 @@ namespace Banshee.LastfmFingerprint
             }
         }
 
+        void GetMoreInfo (TrackInfo track)
+        {
+            var request = new LastfmRequest ("track.getInfo");
+            request.AddParameter ("artist", track.ArtistName);
+            request.AddParameter ("track", track.TrackTitle);
+            request.AddParameter ("mbid", track.MusicBrainzId);
+
+            request.Send ();
+
+            var response = request.GetResponseObject ();
+            if (response == null)
+                return;
+
+            var json_track = (JsonObject)response["track"];
+            //track.Duration = TimeSpan.FromMilliseconds (double.Parse ((string)json_track["duration"]));
+            var json_album = (JsonObject)json_track["album"];
+
+            Log.Debug ("track.getInfo: json_track:" + json_track.ToString ());
+            if (json_album != null)
+            {
+                var attr = (JsonObject)json_album["@attr"];
+                track.TrackNumber = int.Parse ((string)attr["position"]);
+                track.AlbumTitle = (string)json_album["title"];
+                track.AlbumMusicBrainzId = (string)json_album["mbid"];
+                track.AlbumArtist = (string)json_album["artist"];
+            }
+        }
+
 
         private void HandleActiveSourceChanged (SourceEventArgs args)
         {
diff --git a/src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile.in b/src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile.in
index dc52754..25b2be3 100644
--- a/src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile.in
+++ b/src/LastfmFingerprint/Banshee.LastfmFingerprint/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -369,7 +370,7 @@ OUTPUT_FILES = \
 moduledir = $(EXTENSION_DIR)
 module_SCRIPTS = $(OUTPUT_FILES)
 EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
-CLEANFILES = $(OUTPUT_FILES)
+CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 DISTCLEANFILES = *.pidb
 MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -601,6 +602,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_TESTS_TRUE@test: $(ASSEMBLY_FILE)
+ at ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_TESTS_FALSE@test:
+
+check: test
+
 all: $(ASSEMBLY_FILE) theme-icons
 
 run: 
diff --git a/src/LastfmFingerprint/Makefile.in b/src/LastfmFingerprint/Makefile.in
index 3cbede4..8256b39 100644
--- a/src/LastfmFingerprint/Makefile.in
+++ b/src/LastfmFingerprint/Makefile.in
@@ -45,6 +45,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -55,10 +56,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -129,8 +129,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -194,8 +196,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -239,6 +239,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -273,12 +274,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/LastfmFingerprint/liblastfmfpbridge/Makefile.in b/src/LastfmFingerprint/liblastfmfpbridge/Makefile.in
index 02e4ff7..2190dba 100644
--- a/src/LastfmFingerprint/liblastfmfpbridge/Makefile.in
+++ b/src/LastfmFingerprint/liblastfmfpbridge/Makefile.in
@@ -48,6 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -58,10 +59,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -169,8 +169,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -234,8 +236,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -279,6 +279,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -313,12 +314,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Lirc/Banshee.Lirc/Banshee.Lirc.addin.xml b/src/Lirc/Banshee.Lirc/Banshee.Lirc.addin.xml
index f64bc1d..76bd23f 100644
--- a/src/Lirc/Banshee.Lirc/Banshee.Lirc.addin.xml
+++ b/src/Lirc/Banshee.Lirc/Banshee.Lirc.addin.xml
@@ -4,11 +4,11 @@
     id="Banshee.Lirc"
     version="0.1"
     compatVersion="0.1"
-    copyright="© JBL Licensed under the MIT X11 license."
+    copyright="© Jean-Baptiste Lab. Licensed under the MIT X11 license."
     name="Infrared Remote Control"
     category="Community Extensions"
     description="Control Banshee via a normal (infrared) remote control. Requires LIRC."
-    author="JBL"
+    author="Jean-Baptiste Lab"
     url=""
     defaultEnabled="false">
 
diff --git a/src/Lirc/Banshee.Lirc/Banshee.Lirc.dll.config b/src/Lirc/Banshee.Lirc/Banshee.Lirc.dll.config
index 55916c1..0605d77 100644
--- a/src/Lirc/Banshee.Lirc/Banshee.Lirc.dll.config
+++ b/src/Lirc/Banshee.Lirc/Banshee.Lirc.dll.config
@@ -1,3 +1,4 @@
 <configuration>
     <dllmap dll="liblircglue" target="liblircglue.so" />
+    <dllmap dll="lirc_client" target="liblirc_client.so" />
 </configuration>
diff --git a/src/Lirc/Banshee.Lirc/ConfigDialog.cs b/src/Lirc/Banshee.Lirc/ConfigDialog.cs
deleted file mode 100644
index 0221751..0000000
--- a/src/Lirc/Banshee.Lirc/ConfigDialog.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-
-using System;
-
-namespace Banshee.Lirc
-{
-	public partial class ConfigDialog : Gtk.Dialog
-	{
-		protected virtual void OnCancel (object sender, System.EventArgs e)
-		{
-		}
-		
-		public ConfigDialog()
-		{
-			this.Build();
-		}
-
-		protected virtual void OnOk (object sender, System.EventArgs e)
-		{
-		}
-	}
-}
diff --git a/src/Lirc/Banshee.Lirc/LircPlugin.cs b/src/Lirc/Banshee.Lirc/LircPlugin.cs
index 24ae48b..cd5ef16 100644
--- a/src/Lirc/Banshee.Lirc/LircPlugin.cs
+++ b/src/Lirc/Banshee.Lirc/LircPlugin.cs
@@ -17,24 +17,10 @@ namespace Banshee.Lirc
         private LircClient lirc;
         private Thread poll;
 		private ActionMapper ctrl;
-		private ActionGroup actions;
-		private InterfaceActionService action_service;
 
         public LircPlugin()
         {
-			actions = new ActionGroup("Lirc");
 			ctrl = new ActionMapper(new BansheeController());
-			actions.Add(new ActionEntry[] {
-				new ActionEntry("LircAction", null, "_Lirc", null,
-				                "Configure the Lirc Addin", null),
-				new ActionEntry("LircConfigureAction", Stock.Properties, "_Configure",
-				                null, "Configure the Lirc addin", OnConfigurePlugin),
-			});
-			
-			action_service = ServiceManager.Get<InterfaceActionService>();
-			
-			action_service.UIManager.InsertActionGroup(actions, 0);
-            action_service.UIManager.AddUiFromResource("Ui.xml");
         }
 
 		void IExtensionService.Initialize()
@@ -51,17 +37,6 @@ namespace Banshee.Lirc
             lirc = null;
 		}
 
-		public void OnConfigurePlugin(object o, EventArgs args)
-		{
-            ConfigDialog dlg = new ConfigDialog();
-			dlg.Run();
-			dlg.Destroy();
-		}
-
-		~LircPlugin()
-        {
-        }
-
         private void PollThread()
         {
             Log.Debug ("Waiting for LIRC button press...");
diff --git a/src/Lirc/Banshee.Lirc/Makefile.am b/src/Lirc/Banshee.Lirc/Makefile.am
index 7064e09..d955d43 100644
--- a/src/Lirc/Banshee.Lirc/Makefile.am
+++ b/src/Lirc/Banshee.Lirc/Makefile.am
@@ -4,17 +4,11 @@ LINK = $(BANSHEE_LIBS)
 SOURCES =  \
 	ActionMapper.cs \
 	BansheeController.cs \
-	ConfigDialog.cs \
-	gtk-gui/Banshee.Lirc.ConfigDialog.cs \
-	gtk-gui/generated.cs \
 	IController.cs \
 	LircClient.cs \
-	LircPlugin.cs \
-	MockController.cs
+	LircPlugin.cs
 
-RESOURCES =  \
-	Banshee.Lirc.addin.xml \
-	Resources/Ui.xml
+RESOURCES = Banshee.Lirc.addin.xml
 
 if ENABLE_LIRC
 include $(top_srcdir)/build/build.mk
diff --git a/src/Lirc/Banshee.Lirc/Makefile.in b/src/Lirc/Banshee.Lirc/Makefile.in
index ee875ec..666a736 100644
--- a/src/Lirc/Banshee.Lirc/Makefile.in
+++ b/src/Lirc/Banshee.Lirc/Makefile.in
@@ -50,6 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -60,10 +61,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -117,8 +117,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -182,8 +184,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -227,6 +227,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -261,12 +262,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -329,18 +330,11 @@ LINK = $(BANSHEE_LIBS) $(am__append_1)
 SOURCES = \
 	ActionMapper.cs \
 	BansheeController.cs \
-	ConfigDialog.cs \
-	gtk-gui/Banshee.Lirc.ConfigDialog.cs \
-	gtk-gui/generated.cs \
 	IController.cs \
 	LircClient.cs \
-	LircPlugin.cs \
-	MockController.cs
-
-RESOURCES = \
-	Banshee.Lirc.addin.xml \
-	Resources/Ui.xml
+	LircPlugin.cs
 
+RESOURCES = Banshee.Lirc.addin.xml
 
 # Initializers
 @ENABLE_LIRC_TRUE at MONO_BASE_PATH = 
@@ -380,7 +374,7 @@ RESOURCES = \
 @ENABLE_LIRC_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) \
 @ENABLE_LIRC_TRUE@	$(THEME_ICONS_SOURCE) \
 @ENABLE_LIRC_TRUE@	Banshee.Lirc.dll.config
- at ENABLE_LIRC_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_LIRC_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_LIRC_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_LIRC_TRUE at MAINTAINERCLEANFILES = Makefile.in
 @ENABLE_LIRC_TRUE at module_DATA = Banshee.Lirc.dll.config
@@ -635,6 +629,17 @@ uninstall-am: uninstall-moduleDATA uninstall-moduleSCRIPTS
 	uninstall-hook uninstall-moduleDATA uninstall-moduleSCRIPTS
 
 
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_LIRC_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_LIRC_TRUE@check: test
+
 @ENABLE_LIRC_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_LIRC_TRUE at run: 
diff --git a/src/Lirc/Banshee.Lirc/MockController.cs b/src/Lirc/Banshee.Lirc/MockController.cs
deleted file mode 100644
index 3e0f98a..0000000
--- a/src/Lirc/Banshee.Lirc/MockController.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-
-namespace Banshee.Lirc
-{
-	public class MockController : IController
-	{		
-		public MockController()
-		{
-		}
-		
-		public void Play()
-		{
-		}
-			
-		public void Pause()
-		{
-		}
-		
-		public void Stop()
-		{
-		}
-		
-		public void Next()
-		{
-		}
-			
-		public void Previous()
-		{
-		}
-			
-		public void VolumeUp()
-		{
-		}
-			
-		public void VolumeDown()
-		{
-		}
-			
-		public void Mute()
-		{
-		}
-
-		public void Unhandled()
-		{		
-		}
-	}
-}
diff --git a/src/Lirc/Banshee.Lirc/Resources/Ui.xml b/src/Lirc/Banshee.Lirc/Resources/Ui.xml
deleted file mode 100644
index 1160bbf..0000000
--- a/src/Lirc/Banshee.Lirc/Resources/Ui.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<ui>
-  <menubar name="MainMenu">
-    <menu name="ToolsMenu" action="ToolsMenuAction">
-      <menu name="Lirc" action="LircAction">
-        <menuitem name="LircConfigure" action="LircConfigureAction" />
-      </menu>
-    </menu>
-  </menubar>
-</ui>
\ No newline at end of file
diff --git a/src/Lirc/Banshee.Lirc/gtk-gui/Banshee.Lirc.ConfigDialog.cs b/src/Lirc/Banshee.Lirc/gtk-gui/Banshee.Lirc.ConfigDialog.cs
deleted file mode 100644
index ad16563..0000000
--- a/src/Lirc/Banshee.Lirc/gtk-gui/Banshee.Lirc.ConfigDialog.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//
-//
-//      Changes to this file may cause incorrect behavior and will be lost if
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
-
-namespace Banshee.Lirc {
-
-
-    public partial class ConfigDialog {
-
-        private Gtk.Button buttonCancel;
-
-        private Gtk.Button buttonOk;
-
-        protected virtual void Build() {
-            Stetic.Gui.Initialize(this);
-            // Widget Banshee.Lirc.ConfigDialog
-            this.Name = "Banshee.Lirc.ConfigDialog";
-            this.Title = Mono.Unix.Catalog.GetString("dialog1");
-            this.WindowPosition = ((Gtk.WindowPosition)(4));
-            this.HasSeparator = false;
-            // Internal child Banshee.Lirc.ConfigDialog.VBox
-            Gtk.VBox w1 = this.VBox;
-            w1.Name = "dialog1_VBox";
-            w1.BorderWidth = ((uint)(2));
-            // Internal child Banshee.Lirc.ConfigDialog.ActionArea
-            Gtk.HButtonBox w2 = this.ActionArea;
-            w2.Name = "dialog1_ActionArea";
-            w2.Spacing = 6;
-            w2.BorderWidth = ((uint)(5));
-            w2.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonCancel = new Gtk.Button();
-            this.buttonCancel.CanDefault = true;
-            this.buttonCancel.CanFocus = true;
-            this.buttonCancel.Name = "buttonCancel";
-            this.buttonCancel.UseStock = true;
-            this.buttonCancel.UseUnderline = true;
-            this.buttonCancel.Label = "gtk-cancel";
-            this.AddActionWidget(this.buttonCancel, -6);
-            Gtk.ButtonBox.ButtonBoxChild w3 = ((Gtk.ButtonBox.ButtonBoxChild)(w2[this.buttonCancel]));
-            w3.Expand = false;
-            w3.Fill = false;
-            // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-            this.buttonOk = new Gtk.Button();
-            this.buttonOk.CanDefault = true;
-            this.buttonOk.CanFocus = true;
-            this.buttonOk.Name = "buttonOk";
-            this.buttonOk.UseStock = true;
-            this.buttonOk.UseUnderline = true;
-            this.buttonOk.Label = "gtk-ok";
-            this.AddActionWidget(this.buttonOk, -5);
-            Gtk.ButtonBox.ButtonBoxChild w4 = ((Gtk.ButtonBox.ButtonBoxChild)(w2[this.buttonOk]));
-            w4.Position = 1;
-            w4.Expand = false;
-            w4.Fill = false;
-            if ((this.Child != null)) {
-                this.Child.ShowAll();
-            }
-            this.DefaultWidth = 400;
-            this.DefaultHeight = 300;
-            this.Show();
-            this.buttonCancel.Clicked += new System.EventHandler(this.OnCancel);
-            this.buttonOk.Clicked += new System.EventHandler(this.OnOk);
-        }
-    }
-}
diff --git a/src/Lirc/Banshee.Lirc/gtk-gui/generated.cs b/src/Lirc/Banshee.Lirc/gtk-gui/generated.cs
deleted file mode 100644
index c8c5529..0000000
--- a/src/Lirc/Banshee.Lirc/gtk-gui/generated.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-// ------------------------------------------------------------------------------
-//  <autogenerated>
-//      This code was generated by a tool.
-//
-//
-//      Changes to this file may cause incorrect behavior and will be lost if
-//      the code is regenerated.
-//  </autogenerated>
-// ------------------------------------------------------------------------------
-
-namespace Stetic {
-
-
-    internal class Gui {
-
-        private static bool initialized;
-
-        internal static void Initialize(Gtk.Widget iconRenderer) {
-            if ((Stetic.Gui.initialized == false)) {
-                Stetic.Gui.initialized = true;
-            }
-        }
-    }
-
-    internal class ActionGroups {
-
-        public static Gtk.ActionGroup GetActionGroup(System.Type type) {
-            return Stetic.ActionGroups.GetActionGroup(type.FullName);
-        }
-
-        public static Gtk.ActionGroup GetActionGroup(string name) {
-            return null;
-        }
-    }
-}
diff --git a/src/Lirc/GUITestHarness/Makefile.in b/src/Lirc/GUITestHarness/Makefile.in
index 264ed2b..ec7bdb7 100644
--- a/src/Lirc/GUITestHarness/Makefile.in
+++ b/src/Lirc/GUITestHarness/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -87,8 +87,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -152,8 +154,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -197,6 +197,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -231,12 +232,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Lirc/Makefile.in b/src/Lirc/Makefile.in
index 0e74bb8..8384ef2 100644
--- a/src/Lirc/Makefile.in
+++ b/src/Lirc/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -128,8 +128,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -193,8 +195,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -238,6 +238,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -272,12 +273,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Lirc/NUnitTests/Makefile.in b/src/Lirc/NUnitTests/Makefile.in
index 9aa9c3d..5c0fb00 100644
--- a/src/Lirc/NUnitTests/Makefile.in
+++ b/src/Lirc/NUnitTests/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -87,8 +87,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -152,8 +154,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -197,6 +197,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -231,12 +232,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Lirc/lirc-glue/Makefile.in b/src/Lirc/lirc-glue/Makefile.in
index 4507aa4..9a9dad0 100644
--- a/src/Lirc/lirc-glue/Makefile.in
+++ b/src/Lirc/lirc-glue/Makefile.in
@@ -45,6 +45,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -55,10 +56,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -135,8 +135,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -200,8 +202,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -245,6 +245,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -279,12 +280,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/LiveRadio/Makefile.in b/src/LiveRadio/Makefile.in
index da9b07d..170ded6 100644
--- a/src/LiveRadio/Makefile.in
+++ b/src/LiveRadio/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -390,7 +391,7 @@ RESOURCES = \
 @ENABLE_LIVERADIO_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_LIVERADIO_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_LIVERADIO_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_LIVERADIO_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_LIVERADIO_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_LIVERADIO_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_LIVERADIO_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -624,6 +625,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_LIVERADIO_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_LIVERADIO_TRUE@check: test
+
 @ENABLE_LIVERADIO_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_LIVERADIO_TRUE at run: 
diff --git a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricWiki.cs b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricWiki.cs
index ed9c32c..2d20510 100644
--- a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricWiki.cs
+++ b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricWiki.cs
@@ -36,7 +36,7 @@ namespace Banshee.Lyrics.Sources
         public LyricWiki ()
         {
             base.regexLyric =
-                new Regex ("<lyrics>(.*)</lyrics>",
+                new Regex ("<lyrics>(.*?)</lyrics>",
                            RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Singleline);
         }
         public override string Name {
diff --git a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricsWebSource.cs b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricsWebSource.cs
index ff58cc1..8498bd7 100644
--- a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricsWebSource.cs
+++ b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Sources/LyricsWebSource.cs
@@ -88,12 +88,12 @@ namespace Banshee.Lyrics.Sources
 
         protected string CleanArtistName (string artist)
         {
-            return artist.EndsWith (" ") ? artist.Substring (0, artist.Length - 2) : artist;
+            return artist != null ? artist.Trim () : null;
         }
 
         protected string CleanSongTitle (string title)
         {
-            return title.EndsWith (" ") ? title.Substring (0, title.Length - 1) : title;
+            return title != null ? title.Trim () : null;
         }
 
         protected virtual Encoding Encoding {
diff --git a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics/LyricsManager.cs b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics/LyricsManager.cs
index 6c885d2..284087f 100644
--- a/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics/LyricsManager.cs
+++ b/src/Lyrics/Banshee.Lyrics/Banshee.Lyrics/LyricsManager.cs
@@ -139,7 +139,7 @@ namespace Banshee.Lyrics
 
             //check if the network is up
             if (!ServiceManager.Get<Banshee.Networking.Network> ().Connected) {
-                throw new Exception ("You don't seem to be connected to internet.<br>Check your network connection.");
+                throw new NetworkUnavailableException ("You don't seem to be connected to internet. Check your network connection.");
             }
 
             //download the lyrics
diff --git a/src/Lyrics/Makefile.in b/src/Lyrics/Makefile.in
index 4b66b86..775a36d 100644
--- a/src/Lyrics/Makefile.in
+++ b/src/Lyrics/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -389,7 +390,7 @@ RESOURCES = \
 @ENABLE_LYRICS_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_LYRICS_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_LYRICS_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_LYRICS_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_LYRICS_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_LYRICS_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_LYRICS_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -623,6 +624,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_LYRICS_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_LYRICS_TRUE@check: test
+
 @ENABLE_LYRICS_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_LYRICS_TRUE at run: 
diff --git a/src/Magnatune/Makefile.in b/src/Magnatune/Makefile.in
index a4ccb32..7818d0c 100644
--- a/src/Magnatune/Makefile.in
+++ b/src/Magnatune/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -378,7 +379,7 @@ RESOURCES = \
 @ENABLE_MAGNATUNE_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_MAGNATUNE_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_MAGNATUNE_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_MAGNATUNE_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_MAGNATUNE_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_MAGNATUNE_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_MAGNATUNE_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -612,6 +613,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_MAGNATUNE_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_MAGNATUNE_TRUE@check: test
+
 @ENABLE_MAGNATUNE_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_MAGNATUNE_TRUE at run: 
diff --git a/src/Makefile.am b/src/Makefile.am
index f340ac3..2ef1307 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,6 +5,7 @@ SUBDIRS = \
 	Awn \
 	ClutterFlow \
 	CoverWallpaper \
+	Jamendo \
 	LastfmFingerprint \
 	LCD \
 	Lirc \
@@ -15,10 +16,9 @@ SUBDIRS = \
 	OpenVP \
 	RadioStationFetcher \
 	RandomByLastfm \
-	SoundMenu \
 	StreamRecorder \
 	Telepathy \
-	UbuntuOneMusicStore
+	ZeitgeistDataprovider
 
 EXTRA_DIST = AssemblyInfo.cs.in
 
diff --git a/src/Makefile.in b/src/Makefile.in
index ffc7c8a..c9c7249 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -45,6 +45,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -55,10 +56,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -129,8 +129,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -194,8 +196,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -239,6 +239,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -273,12 +274,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -343,6 +344,7 @@ SUBDIRS = \
 	Awn \
 	ClutterFlow \
 	CoverWallpaper \
+	Jamendo \
 	LastfmFingerprint \
 	LCD \
 	Lirc \
@@ -353,10 +355,9 @@ SUBDIRS = \
 	OpenVP \
 	RadioStationFetcher \
 	RandomByLastfm \
-	SoundMenu \
 	StreamRecorder \
 	Telepathy \
-	UbuntuOneMusicStore
+	ZeitgeistDataprovider
 
 EXTRA_DIST = AssemblyInfo.cs.in
 MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/Mirage/Banshee.Mirage/BaseSimilarityContext.cs b/src/Mirage/Banshee.Mirage/BaseSimilarityContext.cs
index 5b95911..dfbd45b 100644
--- a/src/Mirage/Banshee.Mirage/BaseSimilarityContext.cs
+++ b/src/Mirage/Banshee.Mirage/BaseSimilarityContext.cs
@@ -6,7 +6,7 @@ using Mirage;
 
 namespace Banshee.Mirage
 {
-    public abstract class BaseSimilarityContext : IDisposable
+    public abstract class BaseSimilarityContext : Banshee.Collection.Database.RandomBy.QueryContext
     {
         private int seed_id;
         protected ScmsConfiguration Config = new ScmsConfiguration (Analyzer.MFCC_COEFFICIENTS);
@@ -32,15 +32,22 @@ namespace Banshee.Mirage
 
         public abstract IEnumerable<float> Distance (Scms from);
 
-        public void Dispose ()
+        public override void Dispose ()
         {
             DistanceCalculator.RemoveSeed (seed_id);
 
             if (MiragePlugin.Debug) {
-                Console.WriteLine (">>>>>>>>>>>>>> Total ms spent in Distance func: {0} ms - spent reading: {1} ms; total calls: {2}",
-                                   DistanceCalculator.total_ms, DistanceCalculator.total_read_ms, DistanceCalculator.total_count);
-                Console.WriteLine (">>>>>>>>>>>>>> Distance [min, max] = [{0}, {1}]", min_distance, max_distance);
+                DumpDebug ();
             }
+
+            base.Dispose ();
+        }
+
+        protected virtual void DumpDebug ()
+        {
+            Console.WriteLine (">>>>>>>>>>>>>> Total ms spent in Distance func: {0} ms - spent reading: {1} ms; total calls: {2}",
+                               DistanceCalculator.total_ms, DistanceCalculator.total_read_ms, DistanceCalculator.total_count);
+            Console.WriteLine (">>>>>>>>>>>>>> Distance [min, max] = [{0}, {1}]", min_distance, max_distance);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/Mirage/Banshee.Mirage/Makefile.am b/src/Mirage/Banshee.Mirage/Makefile.am
index 16f6be3..8e7a4ce 100644
--- a/src/Mirage/Banshee.Mirage/Makefile.am
+++ b/src/Mirage/Banshee.Mirage/Makefile.am
@@ -1,5 +1,6 @@
 ASSEMBLY = Banshee.Mirage
 LINK = $(BANSHEE_LIBS) -r:$(DIR_BIN)/Mirage.dll
+TEST_ASSEMBLY = yes
 
 SOURCES =  \
 	AnalyzeLibraryJob.cs \
diff --git a/src/Mirage/Banshee.Mirage/Makefile.in b/src/Mirage/Banshee.Mirage/Makefile.in
index 4137e14..0129f61 100644
--- a/src/Mirage/Banshee.Mirage/Makefile.in
+++ b/src/Mirage/Banshee.Mirage/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -324,6 +325,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ASSEMBLY = Banshee.Mirage
 LINK = $(BANSHEE_LIBS) -r:$(DIR_BIN)/Mirage.dll $(am__append_1)
+TEST_ASSEMBLY = yes
 SOURCES = \
 	AnalyzeLibraryJob.cs \
 	BaseSimilarityContext.cs \
@@ -382,7 +384,7 @@ RESOURCES = \
 @ENABLE_MIRAGE_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_MIRAGE_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_MIRAGE_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_MIRAGE_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_MIRAGE_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_MIRAGE_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_MIRAGE_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -616,6 +618,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_MIRAGE_TRUE@check: test
+
 @ENABLE_MIRAGE_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_MIRAGE_TRUE at run: 
diff --git a/src/Mirage/Banshee.Mirage/RandomBySimilar.cs b/src/Mirage/Banshee.Mirage/RandomBySimilar.cs
index dfa41b8..154cd02 100644
--- a/src/Mirage/Banshee.Mirage/RandomBySimilar.cs
+++ b/src/Mirage/Banshee.Mirage/RandomBySimilar.cs
@@ -47,8 +47,6 @@ namespace Banshee.Mirage
         // The RANDOM_CONDITION will exclude the played/skipped items for us, but we need to
         // add the Similarity-based selection[, exclusion], and ordering.
 
-        private string cache_condition;
-
         public RandomBySimilar () : base ("mirage_similar")
         {
             MiragePlugin.Init ();
@@ -57,13 +55,10 @@ namespace Banshee.Mirage
             Adverb = AddinManager.CurrentLocalizer.GetString ("by similar");
             Description = AddinManager.CurrentLocalizer.GetString ("Play songs similar to those already played");
 
-            // TODO Mirage's PlaylistGeneratorSource ensures no more than 50% of tracks are by same artist
-            Condition = "mirage.Status = 0 AND CoreTracks.ArtistID NOT IN (?) AND Distance > 0";
-            From = "LEFT OUTER JOIN MirageTrackAnalysis mirage ON (mirage.TrackID = CoreTracks.TrackID) ";
             Select = ", HYENA_BINARY_FUNCTION ('MIRAGE_DISTANCE', ?, mirage.ScmsData) as Distance";
+            From = "LEFT OUTER JOIN MirageTrackAnalysis mirage ON (mirage.TrackID = CoreTracks.TrackID) ";
+            Condition = "mirage.Status = 0 AND CoreTracks.ArtistID NOT IN (?) AND Distance > 0";
             OrderBy = "Distance ASC, RANDOM ()";
-
-            cache_condition = String.Format ("AND {0} {1} ORDER BY {2}", Condition, RANDOM_CONDITION, OrderBy);
         }
 
         public override bool Next (DateTime after)
@@ -71,29 +66,9 @@ namespace Banshee.Mirage
             return true;
         }
 
-        public override TrackInfo GetPlaybackTrack (DateTime after)
-        {
-            return GetTrack (after, true);
-        }
-
-        public override DatabaseTrackInfo GetShufflerTrack (DateTime after)
+        protected override RandomBy.QueryContext GetQueryContext (DateTime after)
         {
-            return GetTrack (after, false);
-        }
-
-        private DatabaseTrackInfo GetTrack (DateTime after, bool playback)
-        {
-            using (var context = GetSimilarityContext (after, playback)) {
-                var track = playback
-                    ? Cache.GetSingle (Select, From, cache_condition, context.Id, context.AvoidArtistIds, after, after) as DatabaseTrackInfo
-                    : GetTrack (ShufflerQuery, context.Id, context.AvoidArtistIds, after) as DatabaseTrackInfo;
-
-                if (MiragePlugin.Debug) {
-                    Console.WriteLine ("Mirage got {0} as lowest avg distance to the similarity context", track == null ? "(null)" : track.Uri.ToString ());
-                    context.DumpDebug ();
-                }
-                return track;
-            }
+            return GetSimilarityContext (after, Shuffler == Shuffler.Playback);
         }
 
         private SimilarityContext GetSimilarityContext (DateTime after, bool playback)
@@ -101,14 +76,14 @@ namespace Banshee.Mirage
             var context = new SimilarityContext ();
 
             if (!playback) {
-                // Manually added songs are the strongest postiive signal for what we want
+                // Manually added songs are the strongest postive signal for what we want
                 context.AddSeeds (GetSeeds (
                     "d.ModificationType = 1 AND d.LastModifiedAt IS NOT NULL AND d.LastModifiedAt > ? ORDER BY d.LastModifiedAt DESC",
                     after, 4, SimilarityContext.SelectedWeight
                 ));
             }
 
-            // Played songs are the next strongest postiive signal for what we want
+            // Played songs are the next strongest postive signal for what we want
             context.AddSeeds (GetSeeds (
                 "t.LastPlayedStamp IS NOT NULL AND t.LastPlayedStamp > MAX (?, coalesce(d.LastModifiedAt, 0), coalesce(t.LastSkippedStamp, 0)) ORDER BY t.LastPlayedStamp DESC",
                 after, playback ? 4 : 2, SimilarityContext.PlayedWeight
diff --git a/src/Mirage/Banshee.Mirage/SimilarityContext.cs b/src/Mirage/Banshee.Mirage/SimilarityContext.cs
index 33e147d..d3b9c7c 100644
--- a/src/Mirage/Banshee.Mirage/SimilarityContext.cs
+++ b/src/Mirage/Banshee.Mirage/SimilarityContext.cs
@@ -52,7 +52,15 @@ namespace Banshee.Mirage
             }
         }
 
-        public void DumpDebug ()
+        public override IEnumerable<object> Parameters {
+            get {
+                yield return Id;
+                yield return AvoidArtistIds;
+            }
+            set {}
+        }
+
+        protected override void DumpDebug ()
         {
             var avoid_ids = String.Join (", ", AvoidArtistIds.Select (id => id.ToString ()).ToArray ());
             Console.WriteLine ("  Avoided artist ids = {0}\n  Seed Distances:", avoid_ids);
@@ -60,6 +68,8 @@ namespace Banshee.Mirage
             debug = true;
             Console.WriteLine ("  Average weighted distance: {0:N1}", Distance (best_scms).Average ());
             debug = false;
+
+            base.DumpDebug ();
         }
 
         public override IEnumerable<float> Distance (Scms from)
diff --git a/src/Mirage/Banshee.Mirage/Tests/SimilarityTests.cs b/src/Mirage/Banshee.Mirage/Tests/SimilarityTests.cs
index 40d1e83..fd52984 100644
--- a/src/Mirage/Banshee.Mirage/Tests/SimilarityTests.cs
+++ b/src/Mirage/Banshee.Mirage/Tests/SimilarityTests.cs
@@ -31,6 +31,7 @@
 using System;
 using System.Linq;
 
+using Mono.Addins;
 using NUnit.Framework;
 
 using Mirage;
@@ -42,6 +43,19 @@ namespace Banshee.Mirage.Tests
     [TestFixture]
     public class SimilarityTests
     {
+        [TestFixtureSetUp]
+        public void SetUp ()
+        {
+            AddinManager.Initialize ();
+            AddinManager.Registry.Update (null);
+        }
+
+        [TestFixtureTearDown]
+        public void TearDown ()
+        {
+            AddinManager.Shutdown ();
+        }
+
         [Test]
         public void TestEmptyContext ()
         {
@@ -57,14 +71,15 @@ namespace Banshee.Mirage.Tests
             var context = new SimilarityContext ();
             context.AddSeeds (new Seed [] { GetSeed (s1, SimilarityContext.ShuffledWeight) });
             Assert.IsFalse (context.IsEmpty);
-            Assert.IsTrue (Math.Abs (distance_s1_s2 - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()) < 0.1);
+            Assert.Less (Math.Abs (distance_s1_s2 - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()), 0.1);
 
             // Add the same seed w/ the same weight; make sure the average is the same
             context.AddSeeds (new Seed [] { GetSeed (s1, SimilarityContext.ShuffledWeight) });
-            Assert.IsTrue (Math.Abs (distance_s1_s2 - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()) < 0.1);
+            Assert.Less (Math.Abs (distance_s1_s2 - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()), 0.1);
         }
 
         [Test]
+        [Ignore("Fails with bad value: 54.438224792480469d")]
         public void TestDiscardedDistance ()
         {
             // Test with different seed weight
@@ -72,7 +87,7 @@ namespace Banshee.Mirage.Tests
             var context = new SimilarityContext ();
             context.AddSeeds (new Seed [] { GetSeed (s1, SimilarityContext.DiscardedWeight) });
             Assert.IsFalse (context.IsEmpty);
-            Assert.IsTrue (Math.Abs (distance_s1_s2_discarded - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()) < 0.1);
+            Assert.Less (Math.Abs (distance_s1_s2_discarded - context.Distance (Scms.FromBytes (Bytes (s2))).Average ()), 0.1);
         }
 
         [Test]
@@ -105,4 +120,4 @@ namespace Banshee.Mirage.Tests
     }
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/Mirage/Makefile.in b/src/Mirage/Makefile.in
index 11e04b6..7994573 100644
--- a/src/Mirage/Makefile.in
+++ b/src/Mirage/Makefile.in
@@ -45,6 +45,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -55,10 +56,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -129,8 +129,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -194,8 +196,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -239,6 +239,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -273,12 +274,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Mirage/Mirage/Makefile.in b/src/Mirage/Mirage/Makefile.in
index 59b1119..386ee95 100644
--- a/src/Mirage/Mirage/Makefile.in
+++ b/src/Mirage/Mirage/Makefile.in
@@ -50,6 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -60,10 +61,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -117,8 +117,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -182,8 +184,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -227,6 +227,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -261,12 +262,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -380,7 +381,7 @@ RESOURCES = \
 @ENABLE_MIRAGE_TRUE at EXTRA_DIST = $(SOURCES_BUILD) \
 @ENABLE_MIRAGE_TRUE@	$(RESOURCES_EXPANDED) \
 @ENABLE_MIRAGE_TRUE@	$(THEME_ICONS_SOURCE) Mirage.dll.config
- at ENABLE_MIRAGE_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_MIRAGE_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_MIRAGE_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_MIRAGE_TRUE at MAINTAINERCLEANFILES = Makefile.in
 @ENABLE_MIRAGE_TRUE at module_DATA = Mirage.dll.config
@@ -635,6 +636,17 @@ uninstall-am: uninstall-moduleDATA uninstall-moduleSCRIPTS
 	uninstall-hook uninstall-moduleDATA uninstall-moduleSCRIPTS
 
 
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_MIRAGE_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_MIRAGE_TRUE@check: test
+
 @ENABLE_MIRAGE_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_MIRAGE_TRUE at run: 
diff --git a/src/Mirage/Test/Makefile.in b/src/Mirage/Test/Makefile.in
index 5d0c72a..a2d4151 100644
--- a/src/Mirage/Test/Makefile.in
+++ b/src/Mirage/Test/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -87,8 +87,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -152,8 +154,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -197,6 +197,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -231,12 +232,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/Mirage/libmirageaudio/Makefile.in b/src/Mirage/libmirageaudio/Makefile.in
index fb5fe5d..d7cc7f1 100644
--- a/src/Mirage/libmirageaudio/Makefile.in
+++ b/src/Mirage/libmirageaudio/Makefile.in
@@ -47,6 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -57,10 +58,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -152,8 +152,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -217,8 +219,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -262,6 +262,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -296,12 +297,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/OpenVP/Banshee.OpenVP.Visualizations/Makefile.in b/src/OpenVP/Banshee.OpenVP.Visualizations/Makefile.in
index a872b48..66f2444 100644
--- a/src/OpenVP/Banshee.OpenVP.Visualizations/Makefile.in
+++ b/src/OpenVP/Banshee.OpenVP.Visualizations/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -378,7 +379,7 @@ RESOURCES = resources/Banshee.OpenVP.Visualizations.addin.xml
 @ENABLE_OPENVP_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -612,6 +613,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/OpenVP/Banshee.OpenVP/Makefile.in b/src/OpenVP/Banshee.OpenVP/Makefile.in
index 81d8556..b6263b6 100644
--- a/src/OpenVP/Banshee.OpenVP/Makefile.in
+++ b/src/OpenVP/Banshee.OpenVP/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -377,7 +378,7 @@ RESOURCES = \
 @ENABLE_OPENVP_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -611,6 +612,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/OpenVP/Cdh.Affe.Tests/Main.cs b/src/OpenVP/Cdh.Affe.Tests/Main.cs
new file mode 100644
index 0000000..f336967
--- /dev/null
+++ b/src/OpenVP/Cdh.Affe.Tests/Main.cs
@@ -0,0 +1,233 @@
+using System;
+using System.Reflection.Emit;
+
+using Cdh.Affe;
+using Cdh.Affe.Tree;
+
+namespace Tests {
+	public delegate void DMCall();
+	
+	public class MainClass {
+		public static void Main(string[] args) {
+//			TestOne.Run();
+			TestTwo.Run();
+//			TestOne.Run();
+//			TestTwo.Run();
+//			TestOne.Run();
+//			TestTwo.Run();
+			TestCall.Run();
+//			TestPersist.Run();
+//			TestCast.Run();
+//			TestInvoke.Run();
+			TestScope.Run();
+		}
+	}
+	
+	public static class Util {
+		public static DynamicMethod Compile(string script, Type t) {
+			return new AffeCompiler(t).Compile(script);
+		}
+	}
+	
+	public class TestOne {
+		[AffeBound]
+		public float X = 0;
+		
+		[AffeBound]
+		public static readonly float Y = 10;
+		
+		[AffeBound]
+		public static float abs(float a) {
+			if (a < 0)
+				return -a;
+			
+			return a;
+		}
+		
+		public static void Run() {
+			Console.WriteLine("1)");
+			
+			DateTime start = DateTime.Now;
+			DynamicMethod dm = Util.Compile("X = abs((5 - Y) * 3);", typeof(TestOne));
+			Console.WriteLine(DateTime.Now - start);
+			
+			TestOne obj = new TestOne();
+			
+			start = DateTime.Now;
+			for (int i = 0; i < 100000; i++)
+				dm.Invoke(null, new object[] { obj });
+			Console.WriteLine(DateTime.Now - start);
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), obj);
+			
+			start = DateTime.Now;
+			for (int i = 0; i < 100000; i++)
+				d();
+			Console.WriteLine(DateTime.Now - start);
+			
+			Console.WriteLine(obj.X);
+		}
+	}
+	
+	public class TestTwo {
+		[AffeBound]
+		public float X = 0;
+		
+		[AffeBound]
+		public static readonly float Y = 10;
+		
+		[AffeBound, AffeTransform(typeof(float))]
+		public static void abs(AffeCompilerState comp, Expression[] exp) {
+			if (exp.Length != 1)
+				throw new ArgumentException("Wrong number of arguments to method.");
+			
+			ILGenerator il = comp.ILGenerator;
+			
+			Label l = il.DefineLabel();
+			
+			exp[0].Emit(comp);
+			il.Emit(OpCodes.Dup);
+			il.Emit(OpCodes.Ldc_R4, 0f);
+			il.Emit(OpCodes.Bge_Un, l);
+			
+			il.Emit(OpCodes.Neg);
+			il.MarkLabel(l);
+		}
+		
+		public static void Run() {
+			Console.WriteLine("2)");
+			
+			DateTime start = DateTime.Now;
+			DynamicMethod dm = Util.Compile("X = abs((5 - Y) * 3);", typeof(TestTwo));
+			Console.WriteLine(DateTime.Now - start);
+			
+			TestTwo obj = new TestTwo();
+			
+			start = DateTime.Now;
+			for (int i = 0; i < 100000; i++)
+				dm.Invoke(null, new object[] { obj });
+			Console.WriteLine(DateTime.Now - start);
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), obj);
+			
+			start = DateTime.Now;
+			for (int i = 0; i < 100000; i++)
+				d();
+			Console.WriteLine(DateTime.Now - start);
+			
+			Console.WriteLine(obj.X);
+		}
+	}
+	
+	public class TestCall {
+		[AffeBound("w")]
+		public static float WriteValue(float p) {
+			Console.WriteLine("> " + p);
+			return 0;
+		}
+		
+		public static void Run() {
+			DynamicMethod dm = Util.Compile("a=1+3;a=a*2;while (a > 0) { a = a-1; if (a < 4) continue; w(a); } w(0);", typeof(TestCall));
+			
+			TestCall call = new TestCall();
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), call);
+			
+			d();
+		}
+	}
+	
+	public class TestPersist {
+		[AffeBound]
+		public ScriptState State = new ScriptState();
+		
+		[AffeBound]
+		public object nullobj = null;
+		
+		[AffeBound]
+		public void print(float f) {
+			Console.WriteLine(f);
+		}
+		
+		public static void Run() {
+			DynamicMethod dm = Util.Compile("if (b >= 10) return; a=1;b=b+a;", typeof(TestPersist));
+			
+			TestPersist obj = new TestPersist();
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), obj);
+			
+			for (int i = 0; i < 15; i++) {
+				d();
+				Console.WriteLine(obj.State.GetValue<float>("b"));
+			}
+			
+			dm = Util.Compile("print(x);x=2;nullobj.ToString();", typeof(TestPersist));
+			
+			d = (DMCall) dm.CreateDelegate(typeof(DMCall), obj);
+			
+			try {
+				d();
+			} catch {
+			}
+			
+			try {
+				d();
+			} catch {
+			}
+		}
+	}
+	
+	public class TestCast {
+		[AffeBound]
+		public static void Print(bool i) {
+			Console.WriteLine(i);
+		}
+		
+		public static void Run() {
+			DynamicMethod dm = Util.Compile("Print(1);Print(0);Print(200);", typeof(TestCast));
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), null);
+			
+			d();
+		}
+	}
+	
+	public class TestInvoke {
+		[AffeBound("int")]
+		public static readonly object Value = (int) 42;
+		
+		public static void Run() {
+			AffeCompiler compiler = new AffeCompiler(typeof(TestInvoke));
+			compiler.SymbolTable.AddSymbol(new TypeSymbol("Console", typeof(Console)));
+			compiler.SymbolTable.AddSymbol(new TypeSymbol("string", typeof(string)));
+			compiler.SymbolTable.AddSymbol(new TypeSymbol("var", typeof(void)));
+			
+			DynamicMethod dm = compiler.Compile("var s = \"test\";Console.Out.WriteLine(s.Substring(1));");
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), null);
+			
+			d();
+		}
+	}
+	
+	public class TestScope {
+		[AffeBound("i")]
+		public static int Num = 0;
+		
+		[AffeBound]
+		public static void print(object o) {
+			Console.WriteLine(o.ToString());
+		}
+		
+		public static void Run() {
+			AffeCompiler compiler = new AffeCompiler(typeof(TestScope));
+			compiler.SymbolTable.AddSymbol(new TypeSymbol("var", typeof(void)));
+			
+			DynamicMethod dm = compiler.Compile("if(1){var s = \"hi\"; }var s = 1;print(s);");//var s = i;print(s);");
+			
+			DMCall d = (DMCall) dm.CreateDelegate(typeof(DMCall), null);
+			
+			d();
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/OpenVP/Cdh.Affe.Tests/Makefile.am b/src/OpenVP/Cdh.Affe.Tests/Makefile.am
index 0ad0a9d..8989b5e 100644
--- a/src/OpenVP/Cdh.Affe.Tests/Makefile.am
+++ b/src/OpenVP/Cdh.Affe.Tests/Makefile.am
@@ -1,6 +1,6 @@
 ASSEMBLY = Cdh.Affe.Tests
-TARGET = exe
 LINK =  -r:System -r:$(DIR_BIN)/Cdh.Affe.dll
+TEST_ASSEMBLY = yes
 
 SOURCES =  \
 	Main.cs \
@@ -14,4 +14,6 @@ include $(top_srcdir)/build/build.mk
 else
 EXTRA_DIST = $(SOURCES) $(RESOURCES)
 endif
+else
+EXTRA_DIST = $(SOURCES) $(RESOURCES)
 endif
diff --git a/src/OpenVP/Cdh.Affe.Tests/Makefile.in b/src/OpenVP/Cdh.Affe.Tests/Makefile.in
index ac5abeb..5becb8a 100644
--- a/src/OpenVP/Cdh.Affe.Tests/Makefile.in
+++ b/src/OpenVP/Cdh.Affe.Tests/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -323,11 +324,8 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ASSEMBLY = Cdh.Affe.Tests
-
-# All extensions are libraries
- at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at TARGET = library
-TARGET = exe
 LINK = -r:System -r:$(DIR_BIN)/Cdh.Affe.dll $(am__append_1)
+TEST_ASSEMBLY = yes
 SOURCES = \
 	Main.cs \
 	Tests.cs
@@ -337,6 +335,9 @@ RESOURCES =
 # Initializers
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at MONO_BASE_PATH = 
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at MONO_ADDINS_PATH = 
+
+# All extensions are libraries
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at TARGET = library
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at DIR_BIN = $(top_builddir)/bin
 
 # Install Paths
@@ -368,7 +369,8 @@ RESOURCES =
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE@@ENABLE_TESTS_TRUE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_TESTS_FALSE@EXTRA_DIST = $(SOURCES) $(RESOURCES)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -604,6 +606,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+#test:
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at check: test
+
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at run: 
diff --git a/src/OpenVP/Cdh.Affe.Tests/Tests.cs b/src/OpenVP/Cdh.Affe.Tests/Tests.cs
new file mode 100644
index 0000000..8249a52
--- /dev/null
+++ b/src/OpenVP/Cdh.Affe.Tests/Tests.cs
@@ -0,0 +1,376 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection.Emit;
+
+using Cdh.Affe;
+using Cdh.Affe.Tree;
+
+using NUnit.Framework;
+
+namespace Tests {
+	[TestFixture]
+	public class Tests {
+		private delegate void DMCall();
+		
+		private DMCall MakeDMCall(DynamicMethod dm) {
+			return (DMCall) dm.CreateDelegate(typeof(DMCall), this);
+		}
+		
+		private DMCall SharedCompile(string script) {
+			return this.MakeDMCall(this.SharedCompiler.Compile(script));
+		}
+		
+		private void RunScript(string script) {
+			this.SharedCompile(script)();
+		}
+		
+		public Tests() {
+			this.SharedCompiler.SymbolTable.AddSymbol(new TypeSymbol("object", typeof(object)));
+			this.SharedCompiler.SymbolTable.AddSymbol(new TypeSymbol("int", typeof(int)));
+			this.SharedCompiler.SymbolTable.AddSymbol(new TypeSymbol("IComparable", typeof(IComparable)));
+		}
+		
+		private AffeCompiler SharedCompiler = new AffeCompiler(typeof(Tests));
+		
+		[AffeBound]
+		public float BoundFloat = 0;
+		
+		[AffeBound]
+		public float BoundMethod(float f) {
+			Assert.AreEqual(1f, f, 0f, "Bound read");
+			return 2;
+		}
+		
+		private List<float> FloatList = new List<float>();
+		
+		[AffeBound]
+		public void Push(float f) {
+			this.FloatList.Add(f);
+		}
+		
+		private void AssertList(float[] list, string name) {
+			Assert.AreEqual(list.Length, this.FloatList.Count,
+			                "Result count (" + name + ")");
+			
+			for (int i = 0; i < list.Length; i++)
+				Assert.AreEqual(list[i], this.FloatList[i],
+				                string.Format("Result item {0} ({1})",
+				                              i, name));
+		}
+		
+		[Test]
+		public void Binding() {
+			this.BoundFloat = 0f;
+			
+			this.RunScript("BoundFloat = 1;");
+			
+			Assert.AreEqual(1f, this.BoundFloat, 0f);
+			
+			this.RunScript("BoundFloat = BoundMethod(BoundFloat);");
+			
+			Assert.AreEqual(2f, this.BoundFloat, 0f);
+		}
+		
+		[Test]
+		public void Loop() {
+			this.State.Clear();
+			this.FloatList.Clear();
+			
+			this.RunScript("x=0; while (x<10) { Push(x); x = x+1; }");
+			
+			Assert.AreEqual(10, this.FloatList.Count, "Iterations");
+			
+			for (int i = 0; i < 10; i++)
+				Assert.AreEqual((float) i, this.FloatList[i], 0f,
+				                "Loop iteration");
+		}
+		
+		[Test]
+		public void Conditional() {
+			this.State.Clear();
+			this.FloatList.Clear();
+			
+			this.RunScript("x = 0; if (x == 0) Push(1); if (x) Push(1);" +
+			               "x = 1; if (x < 1) Push(0); else Push(1);" +
+			               "x = 2; if (x >= 2) Push(1); " +
+			               "if (x >= 2 && x == 1) Push(1);");
+			
+			Assert.AreEqual(3, this.FloatList.Count, "Push count");
+			
+			for (int i = 0; i < this.FloatList.Count; i++)
+				Assert.AreEqual(1f, this.FloatList[i], "Result item " + i);
+		}
+		
+		[AffeTransform(typeof(float))]
+		public static void BoundTransform(AffeCompilerState state,
+		                                  Expression[] exprs) {
+			Assert.AreEqual(2, exprs.Length, "Argument count to BoundTransform");
+			
+			state.CastTo(exprs[0], typeof(double)).Emit(state);
+			state.CastTo(exprs[1], typeof(double)).Emit(state);
+			
+			state.ILGenerator.Emit(OpCodes.Call, typeof(Math).GetMethod("Pow"));
+			state.ILGenerator.Emit(OpCodes.Conv_R4);
+		}
+		
+		[Test]
+		public void Transform() {
+			this.State.Clear();
+			
+			this.BoundFloat = 0f;
+			
+			this.RunScript("x = 2; y = 8; BoundFloat = BoundTransform(x, y);");
+			
+			Assert.AreEqual(256f, this.BoundFloat, 0f, "Transform result");
+		}
+		
+		[AffeBound]
+		public BoundObjectTest BoundObject = new BoundObjectTest();
+		
+		[AffeBound]
+		public BoundObjectTest BoundObject2 = new BoundObjectTest();
+		
+		[Test]
+		public void Invocation() {
+			AffeCompiler comp = new AffeCompiler(typeof(Tests));
+			comp.SymbolTable.AddSymbol(new TypeSymbol("BoundClass", typeof(BoundObjectTest)));
+			DMCall dm = (DMCall) comp.Compile("Push(BoundObject.InstanceCall());" +
+			                                  "Push(BoundObject.Property.InstanceCall());" +
+			                                  "Push(BoundClass.StaticCall());" +
+			                                  "BoundObject.Field = 1;" +
+			                                  "BoundObject.FieldProperty = BoundObject.Field + 1;")
+				.CreateDelegate(typeof(DMCall), this);
+			
+			this.FloatList.Clear();
+			
+			dm();
+			
+			this.AssertList(new float[] { 1, 1, 2 }, "results");
+			
+			Assert.AreEqual(1f, this.BoundObject.Field, "BoundObject.Field");
+			Assert.AreEqual(2f, this.BoundObject.FieldProperty, "BoundObject.FieldProperty");
+		}
+		
+		[Test]
+		public void Declaration() {
+			this.State.Clear();
+			
+			AffeCompiler comp = new AffeCompiler(typeof(Tests));
+			comp.SymbolTable.AddSymbol(new TypeSymbol("int", typeof(int)));
+			
+			DMCall dm = (DMCall) comp.Compile("a = 2.5; int i = a; BoundFloat = i;")
+				.CreateDelegate(typeof(DMCall), this);
+			
+			BoundFloat = 0f;
+			
+			dm();
+			
+			Assert.AreEqual(2f, this.BoundFloat, "Result");
+		}
+		
+		[AffeBound]
+		public object UntypedObject = new BoundObjectTest();
+		
+		[Test]
+		public void LateBound() {
+			BoundObjectTest obj = (BoundObjectTest) this.UntypedObject;
+			
+			obj.Field = 0f;
+			obj.FieldProperty = 0f;
+			
+			this.FloatList.Clear();
+			
+			this.RunScript("UntypedObject$Field = 2; UntypedObject$Property$FieldProperty = 3;" +
+			               "Push(UntypedObject$Field);Push(UntypedObject$FieldProperty);" +
+			               "Push(UntypedObject$InstanceCall());" +
+			               "Push(UntypedObject$Mult(2, 4));");
+			
+			Assert.AreEqual(2f, obj.Field, "UntypedObject.Field");
+			Assert.AreEqual(3f, obj.FieldProperty, "UntypedObject.FieldProperty");
+			
+			this.AssertList(new float[] { 2, 3, 1, 8 }, "results");
+		}
+		
+		[AffeBound]
+		public string BoundString = null;
+		
+		[Test]
+		public void Cast() {
+			this.BoundString = null;
+			this.BoundFloat = 1;
+			
+			this.RunScript("BoundString=((object) 2.5).GetType().FullName;" +
+			               // This makes sure that (identifier) doesn't get
+			               // consumed as a cast.
+			               "BoundFloat=2 * (BoundFloat);");
+			
+			Assert.AreEqual("System.Single", this.BoundString, "BoundString");
+			Assert.AreEqual(2, this.BoundFloat, "BoundFloat");
+		}
+		
+		[Test]
+		public void ValueType() {
+			this.BoundString = null;
+			this.RunScript("BoundString=(1).ToString();");
+			
+			Assert.AreEqual("1", this.BoundString, "BoundString constant");
+			
+			this.BoundFloat = 0;
+			this.RunScript("BoundFloat=2.5;BoundString=BoundFloat.ToString();");
+			
+			Assert.AreEqual("2.5", this.BoundString, "BoundString field");
+			
+			this.FloatList.Clear();
+			this.RunScript("IComparable c = 2.0;Push(c.CompareTo(2.0));Push(c);");
+			
+			this.AssertList(new float[] { 0, 2 }, "results");
+		}
+		
+		[Test]
+		public void Ternary() {
+			this.FloatList.Clear();
+			
+			this.BoundFloat = 2;
+			this.RunScript("Push(BoundFloat ? 4 : 5);Push(false ? 6 : 7);");
+			
+			this.AssertList(new float[] { 4, 7 }, "results");
+		}
+		
+		[Test]
+		public void Null() {
+			this.FloatList.Clear();
+			
+			this.RunScript("if (BoundObject) Push(1);" +
+			               "if (BoundObject == null) Push(2);" +
+			               "if (BoundObject != null) Push(3);");
+			
+			this.AssertList(new float[] { 1, 3 }, "results");
+		}
+		
+		[Test]
+		public void OperatorOverload() {
+			this.BoundObject.Field = 0;
+			this.BoundObject2.Field = 0;
+			this.BoundFloat = 0;
+			
+			this.RunScript("BoundObject.Field = 5;" +
+			               "BoundObject2.Field = 3;" +
+			               "BoundFloat = BoundObject - BoundObject2;");
+			
+			Assert.AreEqual(2, this.BoundFloat, "BoundFloat");
+		}
+		
+		[AffeBound]
+		public float[] BoundArray = null;
+		
+		[Test]
+		public void Indexing() {
+			this.FloatList.Clear();
+			this.BoundArray = new float[] {1, 2, 3};
+			
+			this.RunScript("Push(BoundArray[0]);" +
+			               "Push(BoundArray[1]);" +
+			               "Push(BoundArray[2]);" +
+			               "BoundArray[1] = 5;");
+			
+			Assert.AreEqual(1, this.BoundArray[0], "BoundArray[0]");
+			Assert.AreEqual(5, this.BoundArray[1], "BoundArray[1]");
+			Assert.AreEqual(3, this.BoundArray[2], "BoundArray[2]");
+			
+			this.AssertList(new float[] { 1, 2, 3 }, "results");
+			
+			this.BoundFloat = 0;
+			this.BoundObject.Field = 0;
+			
+			this.RunScript("BoundFloat = BoundObject[5, 6];" +
+			               "BoundObject[3, 4] = 3;");
+			
+			Assert.AreEqual(30, this.BoundFloat, "BoundFloat");
+			Assert.AreEqual(15, this.BoundObject.Field, "BoundObject.Field");
+		}
+		
+		[Test]
+		public void Comment() {
+			this.FloatList.Clear();
+			
+			this.RunScript("Push(1); // Push(2);\n" +
+			               "Push(3);\n" +
+			               "// test\n" +
+			               " // Push(4);\n");
+			
+			this.AssertList(new float[] { 1, 3 }, "results");
+		}
+		
+		[AffeBound]
+		public ScriptState State = new ScriptState();
+		
+		[Test]
+		public void Persistence() {
+			this.FloatList.Clear();
+			
+			this.RunScript("int persist1 = 4; int! persist2; persist2 = 5; x = 6;");
+			
+			this.RunScript("int! persist1; int! persist2; Push(persist1); Push(persist2); Push(x);");
+			
+			this.AssertList(new float[] { 0, 5, 6 }, "results");
+		}
+		
+		[AffeBound]
+		public const float LiteralPI = (float) Math.PI;
+		
+		[Test]
+		public void Literals() {
+			this.BoundFloat = 0;
+			
+			this.RunScript("BoundFloat = LiteralPI;");
+			
+			Assert.AreEqual(LiteralPI, this.BoundFloat, "BoundFloat");
+		}
+	}
+	
+	public class BoundObjectTest {
+		public BoundObjectTest Property {
+			get {
+				return this;
+			}
+		}
+		
+		public float Field = 0f;
+		
+		public float FieldProperty {
+			get {
+				return this.mProperty;
+			}
+			set {
+				this.mProperty = value;
+			}
+		}
+		
+		public float mProperty = 0f;
+		
+		public float InstanceCall() {
+			return 1f;
+		}
+		
+		public float Mult(float x, float y) {
+			return x*y;
+		}
+		
+		public static float StaticCall() {
+			return 2f;
+		}
+		
+		public static float operator-(BoundObjectTest a, BoundObjectTest b) {
+			return a.Field - b.Field;
+		}
+		
+		public float this[float x, float y] {
+			get {
+				return x * y;
+			}
+			set {
+				this.Field = x * y + value;
+			}
+		}
+	}
+}
diff --git a/src/OpenVP/Cdh.Affe/Makefile.in b/src/OpenVP/Cdh.Affe/Makefile.in
index a3c9425..328f857 100644
--- a/src/OpenVP/Cdh.Affe/Makefile.in
+++ b/src/OpenVP/Cdh.Affe/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -377,7 +378,7 @@ JAY_FILES = jay/affe-parser.jay \
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) \
 @ENABLE_OPENVP_TRUE@	$(RESOURCES_EXPANDED) \
 @ENABLE_OPENVP_TRUE@	$(THEME_ICONS_SOURCE) $(JAY_FILES)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -614,6 +615,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 affe-parser.cs : $(JAY_FILES)
 	$(JAY) -b .cs -c $< < jay/skeleton.cs > $@
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/OpenVP/Makefile.in b/src/OpenVP/Makefile.in
index ea85033..fcd377e 100644
--- a/src/OpenVP/Makefile.in
+++ b/src/OpenVP/Makefile.in
@@ -44,6 +44,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -54,10 +55,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -128,8 +128,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -193,8 +195,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -238,6 +238,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -272,12 +273,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/OpenVP/OpenVP.Core/Makefile.in b/src/OpenVP/OpenVP.Core/Makefile.in
index bfa599b..069cd22 100644
--- a/src/OpenVP/OpenVP.Core/Makefile.in
+++ b/src/OpenVP/OpenVP.Core/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -379,7 +380,7 @@ RESOURCES =
 @ENABLE_OPENVP_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -613,6 +614,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/OpenVP/OpenVP.Scripting/Makefile.in b/src/OpenVP/OpenVP.Scripting/Makefile.in
index 5ec4632..2db4915 100644
--- a/src/OpenVP/OpenVP.Scripting/Makefile.in
+++ b/src/OpenVP/OpenVP.Scripting/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -369,7 +370,7 @@ RESOURCES =
 @ENABLE_OPENVP_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -603,6 +604,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/OpenVP/OpenVP/Makefile.in b/src/OpenVP/OpenVP/Makefile.in
index f21903c..671d600 100644
--- a/src/OpenVP/OpenVP/Makefile.in
+++ b/src/OpenVP/OpenVP/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -388,7 +389,7 @@ RESOURCES =
 @ENABLE_OPENVP_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_OPENVP_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_OPENVP_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_OPENVP_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_OPENVP_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_OPENVP_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -622,6 +623,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_OPENVP_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_OPENVP_TRUE@check: test
+
 @ENABLE_OPENVP_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_OPENVP_TRUE at run: 
diff --git a/src/RadioStationFetcher/Makefile.in b/src/RadioStationFetcher/Makefile.in
index a6c0c66..9989325 100644
--- a/src/RadioStationFetcher/Makefile.in
+++ b/src/RadioStationFetcher/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -374,7 +375,7 @@ RESOURCES = \
 @ENABLE_RADIOSTATIONFETCHER_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_RADIOSTATIONFETCHER_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_RADIOSTATIONFETCHER_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_RADIOSTATIONFETCHER_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_RADIOSTATIONFETCHER_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_RADIOSTATIONFETCHER_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -608,6 +609,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_RADIOSTATIONFETCHER_TRUE@check: test
+
 @ENABLE_RADIOSTATIONFETCHER_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_RADIOSTATIONFETCHER_TRUE at run: 
diff --git a/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs b/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs
index 0884fd4..3d4f8fa 100644
--- a/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs
+++ b/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs
@@ -49,8 +49,6 @@ namespace Banshee.RandomByLastfm
         private const int MAX_ARTISTS = 200;
         private const string ARTIST_QUERY = @"SELECT ArtistID, NameLowered FROM CoreArtists GROUP BY NameLowered HAVING NameLowered in (?)";
 
-        private static string track_condition = String.Format ("AND CoreArtists.ArtistID = ? {0} ORDER BY RANDOM()", RANDOM_CONDITION);
-
         private static bool initiated = false;
         private static object initiated_lock = new object ();
         private static short instanceCount = 0;
@@ -102,10 +100,9 @@ namespace Banshee.RandomByLastfm
             });
         }
 
-        public override TrackInfo GetPlaybackTrack (DateTime after)
+        protected override IEnumerable<object> GetConditionParameters (DateTime after)
         {
-            int randomId = weightedRandom.GetRandom ();
-            return Cache.GetSingleWhere (track_condition, randomId, after, after);
+			yield return weightedRandom.GetRandom ();
         }
 
         public override bool Next (DateTime after)
@@ -113,12 +110,6 @@ namespace Banshee.RandomByLastfm
             return true;
         }
 
-        public override DatabaseTrackInfo GetShufflerTrack (DateTime after)
-        {
-            int randomId = weightedRandom.GetRandom ();
-            return GetTrack (ShufflerQuery, randomId, after);
-        }
-
         /// <summary>
         /// Catch PlayerEvent and schedule new lastfm query, as long as current Artist is not the last artist queried
         /// </summary>
diff --git a/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs b/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs
index 50f5b69..13b115b 100644
--- a/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs
+++ b/src/RandomByLastfm/Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs
@@ -49,8 +49,6 @@ namespace Banshee.RandomByLastfm
 
         private const string ARTIST_QUERY = @"SELECT ArtistID, NameLowered FROM CoreArtists GROUP BY NameLowered HAVING NameLowered in (?) OR MusicBrainzID in (?)";
 
-        private static string track_condition = String.Format ("AND CoreArtists.ArtistID = ? {0} ORDER BY RANDOM()", RANDOM_CONDITION);
-
         private static bool initiated = false;
         private static object initiated_lock = new object ();
         private static short instanceCount = 0;
@@ -105,9 +103,9 @@ namespace Banshee.RandomByLastfm
             });
         }
 
-        public override TrackInfo GetPlaybackTrack (DateTime after)
+        protected override IEnumerable<object> GetConditionParameters (DateTime after)
         {
-            return Cache.GetSingleWhere (track_condition, weightedRandom.GetInvertedRandom (), after, after);
+			yield return weightedRandom.GetInvertedRandom ();
         }
 
         public override bool Next (DateTime after)
@@ -115,12 +113,6 @@ namespace Banshee.RandomByLastfm
             return true;
         }
 
-        public override DatabaseTrackInfo GetShufflerTrack (DateTime after)
-        {
-            return GetTrack (ShufflerQuery, weightedRandom.GetInvertedRandom (), after);
-        }
-
-
         /// <summary>
         /// Query Lastfm for UserTopArtists
         /// </summary>
diff --git a/src/RandomByLastfm/Makefile.am b/src/RandomByLastfm/Makefile.am
index c734f2c..950aad5 100644
--- a/src/RandomByLastfm/Makefile.am
+++ b/src/RandomByLastfm/Makefile.am
@@ -1,6 +1,5 @@
 ASSEMBLY = Banshee.RandomByLastfm
 LINK = $(BANSHEE_LIBS) $(BANSHEE_LASTFM_LIBS)
-TARGET = library
 SOURCES =  \
 	Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs \
 	Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs \
diff --git a/src/RandomByLastfm/Makefile.in b/src/RandomByLastfm/Makefile.in
index 5509759..34b464b 100644
--- a/src/RandomByLastfm/Makefile.in
+++ b/src/RandomByLastfm/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -324,10 +325,6 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ASSEMBLY = Banshee.RandomByLastfm
 LINK = $(BANSHEE_LIBS) $(BANSHEE_LASTFM_LIBS) $(am__append_1)
-
-# All extensions are libraries
- at ENABLE_RANDOMBYLASTFM_TRUE@TARGET = library
-TARGET = library
 SOURCES = \
 	Banshee.RandomByLastfm/RandomByLastfmSimilarArtists.cs \
 	Banshee.RandomByLastfm/RandomByLastfmUserTopArtists.cs \
@@ -338,6 +335,9 @@ RESOURCES = RandomByLastfm.addin.xml
 # Initializers
 @ENABLE_RANDOMBYLASTFM_TRUE at MONO_BASE_PATH = 
 @ENABLE_RANDOMBYLASTFM_TRUE at MONO_ADDINS_PATH = 
+
+# All extensions are libraries
+ at ENABLE_RANDOMBYLASTFM_TRUE@TARGET = library
 @ENABLE_RANDOMBYLASTFM_TRUE at DIR_BIN = $(top_builddir)/bin
 
 # Install Paths
@@ -369,7 +369,7 @@ RESOURCES = RandomByLastfm.addin.xml
 @ENABLE_RANDOMBYLASTFM_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_RANDOMBYLASTFM_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_RANDOMBYLASTFM_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_RANDOMBYLASTFM_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_RANDOMBYLASTFM_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_RANDOMBYLASTFM_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_RANDOMBYLASTFM_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -603,6 +603,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_RANDOMBYLASTFM_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_RANDOMBYLASTFM_TRUE@check: test
+
 @ENABLE_RANDOMBYLASTFM_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_RANDOMBYLASTFM_TRUE at run: 
diff --git a/src/SoundMenu/Banshee.SoundMenu/SoundMenuService.cs b/src/SoundMenu/Banshee.SoundMenu/SoundMenuService.cs
deleted file mode 100644
index 8e49c62..0000000
--- a/src/SoundMenu/Banshee.SoundMenu/SoundMenuService.cs
+++ /dev/null
@@ -1,428 +0,0 @@
-//
-// SoundMenuService.cs
-//
-// Authors:
-//   Bertrand Lorentz <bertrand.lorentz at gmail.com>
-//
-// Copyright (C) 2010 Bertrand Lorentz
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-using Mono.Addins;
-using Mono.Unix;
-using Gtk;
-using Notifications;
-
-using Hyena;
-using Banshee.Base;
-using Banshee.Collection;
-using Banshee.Collection.Gui;
-using Banshee.Configuration;
-using Banshee.Gui;
-using Banshee.IO;
-using Banshee.MediaEngine;
-using Banshee.ServiceStack;
-using Banshee.Preferences;
-
-using Indicate;
-
-namespace Banshee.SoundMenu
-{
-    public class SoundMenuService : IExtensionService
-    {
-        private bool? actions_supported;
-        private ArtworkManager artwork_manager_service;
-        private Notification current_nf;
-        private TrackInfo current_track;
-        private GtkElementsService elements_service;
-        private InterfaceActionService interface_action_service;
-        private string notify_last_artist;
-        private string notify_last_title;
-        private Server server;
-
-        private const int icon_size = 42;
-
-        public SoundMenuService ()
-        {
-        }
-
-        void IExtensionService.Initialize ()
-        {
-            elements_service = ServiceManager.Get<GtkElementsService> ();
-            interface_action_service = ServiceManager.Get<InterfaceActionService> ();
-
-            var notif_addin = AddinManager.Registry.GetAddin("Banshee.NotificationArea");
-
-            if (notif_addin != null && notif_addin.Enabled) {
-                Log.Debug("NotificationArea conflicts with SoundMenu, disabling NotificationArea");
-                notif_addin.Enabled = false;
-            }
-
-            AddinManager.AddinLoaded += OnAddinLoaded;
-
-            if (!ServiceStartup ()) {
-                ServiceManager.ServiceStarted += OnServiceStarted;
-            }
-        }
-
-        private void OnServiceStarted (ServiceStartedArgs args)
-        {
-            if (args.Service is Banshee.Gui.InterfaceActionService) {
-                interface_action_service = (InterfaceActionService)args.Service;
-            } else if (args.Service is GtkElementsService) {
-                elements_service = (GtkElementsService)args.Service;
-            }
-
-            ServiceStartup ();
-        }
-
-        private bool ServiceStartup ()
-        {
-            if (elements_service == null || interface_action_service == null) {
-                return false;
-            }
-
-            interface_action_service.GlobalActions.Add (new ActionEntry [] {
-                new ActionEntry ("CloseAction", Stock.Close,
-                    AddinManager.CurrentLocalizer.GetString ("_Close"), "<Control>W",
-                    AddinManager.CurrentLocalizer.GetString ("Close"), CloseWindow)
-            });
-
-
-            InstallPreferences ();
-            server = Server.RefDefault ();
-            if (Enabled) {
-                Register ();
-            }
-
-            ServiceManager.PlayerEngine.ConnectEvent (OnPlayerEvent,
-               PlayerEvent.StartOfStream |
-               PlayerEvent.EndOfStream |
-               PlayerEvent.TrackInfoUpdated |
-               PlayerEvent.StateChange);
-
-            artwork_manager_service = ServiceManager.Get<ArtworkManager> ();
-            artwork_manager_service.AddCachedSize (icon_size);
-
-            RegisterCloseHandler ();
-
-            ServiceManager.ServiceStarted -= OnServiceStarted;
-
-            return true;
-        }
-
-        public void Dispose ()
-        {
-            if (current_nf != null) {
-                try {
-                    current_nf.Close ();
-                } catch {}
-            }
-
-            UninstallPreferences ();
-
-            ServiceManager.PlayerEngine.DisconnectEvent (OnPlayerEvent);
-
-            elements_service.PrimaryWindowClose = null;
-
-            Gtk.Action close_action = interface_action_service.GlobalActions["CloseAction"];
-            if (close_action != null) {
-                interface_action_service.GlobalActions.Remove (close_action);
-            }
-
-            AddinManager.AddinLoaded -= OnAddinLoaded;
-
-            elements_service = null;
-            interface_action_service = null;
-        }
-
-        void OnAddinLoaded (object sender, AddinEventArgs args)
-        {
-            if (args.AddinId == "Banshee.NotificationArea") {
-                Log.Debug("SoundMenu conflicts with NotificationArea, disabling SoundMenu");
-                AddinManager.Registry.GetAddin("Banshee.SoundMenu").Enabled = false;
-            }
-        }
-
-        public void Register ()
-        {
-            Log.Debug ("Registering with sound indicator");
-            server.SetType ("music.banshee");
-            string desktop_file = Paths.Combine (Paths.InstalledApplicationDataRoot,
-                                                 "applications", "banshee-1.desktop");
-            server.DesktopFile (desktop_file);
-            server.Show ();
-        }
-
-        public void Unregister ()
-        {
-            server.Hide ();
-        }
-
-#region Notifications
-        private bool ActionsSupported {
-            get {
-                if (!actions_supported.HasValue) {
-                    actions_supported = Notifications.Global.Capabilities != null &&
-                        Array.IndexOf (Notifications.Global.Capabilities, "actions") > -1;
-                }
-
-                return actions_supported.Value;
-            }
-        }
-
-        private bool OnPrimaryWindowClose ()
-        {
-            CloseWindow (null, null);
-            return true;
-        }
-
-        private void CloseWindow (object o, EventArgs args)
-        {
-            try {
-                if (NotifyOnCloseSchema.Get ()) {
-                    Notification nf = new Notification (
-                        AddinManager.CurrentLocalizer.GetString ("Still Running"),
-                        AddinManager.CurrentLocalizer.GetString (
-                            "Banshee was closed to the sound menu. " +
-                            "Use the <i>Quit</i> option to end your session."),
-                            "media-player-banshee");
-                    nf.Urgency = Urgency.Low;
-                    nf.Show ();
-
-                    NotifyOnCloseSchema.Set (false);
-                }
-            } catch (Exception e) {
-                Log.Warning ("Error while trying to notify of window close.", e.Message, false);
-            }
-
-            elements_service.PrimaryWindow.Visible = false;
-        }
-
-        private void OnPlayerEvent (PlayerEventArgs args)
-        {
-            switch (args.Event) {
-                case PlayerEvent.StartOfStream:
-                case PlayerEvent.TrackInfoUpdated:
-                    current_track = ServiceManager.PlayerEngine.CurrentTrack;
-                    ShowTrackNotification ();
-                    break;
-                case PlayerEvent.EndOfStream:
-                    current_track = null;
-                    break;
-            }
-        }
-
-        private void OnSongSkipped (object o, ActionArgs args)
-        {
-            if (args.Action == "skip-song") {
-                ServiceManager.PlaybackController.Next ();
-            }
-        }
-
-        private string GetByFrom (string artist, string display_artist, string album, string display_album)
-        {
-            bool has_artist = !String.IsNullOrEmpty (artist);
-            bool has_album = !String.IsNullOrEmpty (album);
-
-            string markup = null;
-            if (has_artist && has_album) {
-                // Translators: {0} and {1} are Artist Name and
-                // Album Title, respectively;
-                // e.g. 'by Parkway Drive from Killing with a Smile'
-                markup = String.Format (AddinManager.CurrentLocalizer.GetString ("by '{0}' from '{1}'"),
-                                        display_artist, display_album);
-            } else if (has_album) {
-                // Translators: {0} is for Album Title;
-                // e.g. 'from Killing with a Smile'
-                markup = String.Format (AddinManager.CurrentLocalizer.GetString ("from '{0}'"),
-                                        display_album);
-            } else {
-                // Translators: {0} is for Artist Name;
-                // e.g. 'by Parkway Drive'
-                markup = String.Format(AddinManager.CurrentLocalizer.GetString ("by '{0}'"),
-                                       display_artist);
-            }
-            return markup;
-        }
-
-        private void ShowTrackNotification ()
-        {
-            // This has to happen before the next if, otherwise the last_* members aren't set correctly.
-            if (current_track == null || (notify_last_title == current_track.DisplayTrackTitle
-                && notify_last_artist == current_track.DisplayArtistName)) {
-                return;
-            }
-
-            notify_last_title = current_track.DisplayTrackTitle;
-            notify_last_artist = current_track.DisplayArtistName;
-
-            if (!ShowNotificationsSchema.Get ()) {
-                return;
-            }
-
-            foreach (var window in elements_service.ContentWindows) {
-                if (window.HasToplevelFocus) {
-                    return;
-                }
-            }
-
-            bool is_notification_daemon = false;
-            try {
-                var name = Notifications.Global.ServerInformation.Name;
-                is_notification_daemon = name == "notification-daemon" || name == "Notification Daemon";
-            } catch {
-                // This will be reached if no notification daemon is running
-                return;
-            }
-
-            string message = GetByFrom (
-                current_track.ArtistName, current_track.DisplayArtistName,
-                current_track.AlbumTitle, current_track.DisplayAlbumTitle);
-
-            string image = null;
-
-            image = is_notification_daemon
-                ? CoverArtSpec.GetPathForSize (current_track.ArtworkId, icon_size)
-                : CoverArtSpec.GetPath (current_track.ArtworkId);
-
-            if (!File.Exists (new SafeUri(image))) {
-                if (artwork_manager_service != null) {
-                    // artwork does not exist, try looking up the pixbuf to trigger scaling or conversion
-                    Gdk.Pixbuf tmp_pixbuf = is_notification_daemon
-                        ? artwork_manager_service.LookupScalePixbuf (current_track.ArtworkId, icon_size)
-                        : artwork_manager_service.LookupPixbuf (current_track.ArtworkId);
-
-                    if (tmp_pixbuf == null) {
-                        image = "audio-x-generic";
-                    } else {
-                        tmp_pixbuf.Dispose ();
-                    }
-                }
-            }
-            try {
-                if (current_nf == null) {
-                    current_nf = new Notification (current_track.DisplayTrackTitle, message, image);
-                } else {
-                    current_nf.Summary = current_track.DisplayTrackTitle;
-                    current_nf.Body = message;
-                    current_nf.IconName = image;
-                }
-
-                current_nf.Urgency = Urgency.Low;
-                current_nf.Timeout = 4500;
-
-                if (!current_track.IsLive && ActionsSupported && interface_action_service.PlaybackActions["NextAction"].Sensitive) {
-                    current_nf.AddAction ("skip-song", AddinManager.CurrentLocalizer.GetString ("Skip this item"), OnSongSkipped);
-                }
-                current_nf.Show ();
-
-            } catch (Exception e) {
-                Log.Warning ("Cannot show notification", e.Message, false);
-            }
-        }
-
-        private void RegisterCloseHandler ()
-        {
-            if (elements_service.PrimaryWindowClose == null) {
-                elements_service.PrimaryWindowClose = OnPrimaryWindowClose;
-            }
-        }
-
-        private void UnregisterCloseHandler ()
-        {
-            if (elements_service.PrimaryWindowClose != null) {
-                elements_service.PrimaryWindowClose = null;
-            }
-        }
-#endregion
-
-#region Preferences
-        private PreferenceBase enabled_pref;
-
-        private void InstallPreferences ()
-        {
-            PreferenceService service = ServiceManager.Get<PreferenceService> ();
-            if (service == null) {
-                return;
-            }
-
-            enabled_pref = service["general"]["misc"].Add (
-                new SchemaPreference<bool> (EnabledSchema,
-                    Catalog.GetString ("_Show Banshee in the sound menu"),
-                    Catalog.GetString ("Control Banshee through the sound menu"),
-                    delegate { Enabled = EnabledSchema.Get (); })
-            );
-        }
-
-        private void UninstallPreferences ()
-        {
-            PreferenceService service = ServiceManager.Get<PreferenceService> ();
-            if (service == null) {
-                return;
-            }
-
-            service["general"]["misc"].Remove (enabled_pref);
-        }
-
-        public bool Enabled {
-            get { return EnabledSchema.Get (); }
-            set {
-                EnabledSchema.Set (value);
-                if (value) {
-                    Register ();
-                    RegisterCloseHandler ();
-                } else {
-                    Unregister ();
-                    UnregisterCloseHandler ();
-                }
-            }
-        }
-
-        private static readonly SchemaEntry<bool> EnabledSchema = new SchemaEntry<bool> (
-            "plugins.soundmenu", "enabled",
-            true,
-            "Show Banshee in the sound menu",
-            "Show Banshee in the sound menu"
-        );
-
-        public static readonly SchemaEntry<bool> ShowNotificationsSchema = new SchemaEntry<bool> (
-            "plugins.soundmenu", "show_notifications",
-            true,
-            "Show notifications",
-            "Show information notifications when item starts playing"
-        );
-
-        public static readonly SchemaEntry<bool> NotifyOnCloseSchema = new SchemaEntry<bool> (
-            "plugins.soundmenu", "notify_on_close",
-            true,
-            "Show a notification when closing main window",
-            "When the main window is closed, show a notification stating this has happened."
-        );
-#endregion
-
-        string IService.ServiceName {
-            get { return "SoundMenuService"; }
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/SoundMenu/Makefile.am b/src/SoundMenu/Makefile.am
deleted file mode 100644
index 11b3b65..0000000
--- a/src/SoundMenu/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-ASSEMBLY = Banshee.SoundMenu
-LINK = $(BANSHEE_LIBS) $(INDICATESHARP_LIBS) $(NOTIFYSHARP_LIBS)
-
-SOURCES = Banshee.SoundMenu/SoundMenuService.cs
-
-RESOURCES = SoundMenu.addin.xml
-
-if ENABLE_SOUNDMENU
-include $(top_srcdir)/build/build.mk
-else
-EXTRA_DIST = $(SOURCES) $(RESOURCES)
-endif
diff --git a/src/SoundMenu/Makefile.in b/src/SoundMenu/Makefile.in
deleted file mode 100644
index 76a1c21..0000000
--- a/src/SoundMenu/Makefile.in
+++ /dev/null
@@ -1,643 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(top_srcdir)/build/build.environment.mk \
-	$(top_srcdir)/build/build.mk \
-	$(top_srcdir)/build/build.rules.mk
- at ENABLE_SOUNDMENU_TRUE@@ENABLE_TESTS_TRUE at am__append_1 = " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
-subdir = src/SoundMenu
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
-	$(top_srcdir)/build/m4/extensions/ampache.m4 \
-	$(top_srcdir)/build/m4/extensions/appindicator.m4 \
-	$(top_srcdir)/build/m4/extensions/awn.m4 \
-	$(top_srcdir)/build/m4/extensions/banshee.m4 \
-	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
-	$(top_srcdir)/build/m4/extensions/common.m4 \
-	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
-	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
-	$(top_srcdir)/build/m4/extensions/lcd.m4 \
-	$(top_srcdir)/build/m4/extensions/lirc.m4 \
-	$(top_srcdir)/build/m4/extensions/liveradio.m4 \
-	$(top_srcdir)/build/m4/extensions/lyrics.m4 \
-	$(top_srcdir)/build/m4/extensions/magnatune.m4 \
-	$(top_srcdir)/build/m4/extensions/mirage.m4 \
-	$(top_srcdir)/build/m4/extensions/openvp.m4 \
-	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
-	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
-	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
-	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
-	$(top_srcdir)/build/m4/shave/shave.m4 \
-	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
-	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
-	$(top_srcdir)/build/m4/shamrock/i18n.m4 \
-	$(top_srcdir)/build/m4/shamrock/mono.m4 \
-	$(top_srcdir)/build/m4/shamrock/nunit.m4 \
-	$(top_srcdir)/build/m4/shamrock/programs.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(moduledir)"
-SCRIPTS = $(module_SCRIPTS)
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-ALL_LINGUAS = @ALL_LINGUAS@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-APPINDICATORSHARP_CFLAGS = @APPINDICATORSHARP_CFLAGS@
-APPINDICATORSHARP_LIBS = @APPINDICATORSHARP_LIBS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
-BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
-BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
-BANSHEE_LIBS = @BANSHEE_LIBS@
-BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
-BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
-BANSHEE_WEBBROWSER_CFLAGS = @BANSHEE_WEBBROWSER_CFLAGS@
-BANSHEE_WEBBROWSER_LIBS = @BANSHEE_WEBBROWSER_LIBS@
-BUILD_HOST_CPU = @BUILD_HOST_CPU@
-BUILD_HOST_OS = @BUILD_HOST_OS@
-BUILD_TIME = @BUILD_TIME@
-BUILD_VENDOR_ID = @BUILD_VENDOR_ID@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CLUTTER_BUNDLEFILES = @CLUTTER_BUNDLEFILES@
-CLUTTER_SHARP_CFLAGS = @CLUTTER_SHARP_CFLAGS@
-CLUTTER_SHARP_LIBS = @CLUTTER_SHARP_LIBS@
-CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
-DOC_USER_FORMATS = @DOC_USER_FORMATS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_RELEASE = @ENABLE_RELEASE@
-EXEEXT = @EXEEXT@
-EXTENSION_DIR = @EXTENSION_DIR@
-F77 = @F77@
-FC = @FC@
-FFTW3F_CFLAGS = @FFTW3F_CFLAGS@
-FFTW3F_LIBS = @FFTW3F_LIBS@
-FGREP = @FGREP@
-GCONFSHARP_CFLAGS = @GCONFSHARP_CFLAGS@
-GCONFSHARP_LIBS = @GCONFSHARP_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCONF_SHARP_20_CFLAGS = @GCONF_SHARP_20_CFLAGS@
-GCONF_SHARP_20_LIBS = @GCONF_SHARP_20_LIBS@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GMCS_FLAGS = @GMCS_FLAGS@
-GMOFILES = @GMOFILES@
-GMSGFMT = @GMSGFMT@
-GNOME_DOC_UTILS_CFLAGS = @GNOME_DOC_UTILS_CFLAGS@
-GNOME_DOC_UTILS_LIBS = @GNOME_DOC_UTILS_LIBS@
-GREP = @GREP@
-GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
-GSTREAMER_LIBS = @GSTREAMER_LIBS@
-HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
-INTLLIBS = @INTLLIBS@
-INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
-INTLTOOL_MERGE = @INTLTOOL_MERGE@
-INTLTOOL_PERL = @INTLTOOL_PERL@
-INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-JAY = @JAY@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBSAMPLERATE_CFLAGS = @LIBSAMPLERATE_CFLAGS@
-LIBSAMPLERATE_LIBS = @LIBSAMPLERATE_LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEFLAGS = @MAKEFLAGS@
-MAKEINFO = @MAKEINFO@
-MCS = @MCS@
-MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-MONO = @MONO@
-MONO_CFLAGS = @MONO_CFLAGS@
-MONO_LIBS = @MONO_LIBS@
-MONO_MODULE_CFLAGS = @MONO_MODULE_CFLAGS@
-MONO_MODULE_LIBS = @MONO_MODULE_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_OPTS = @MSGFMT_OPTS@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NOTIFYSHARP_CFLAGS = @NOTIFYSHARP_CFLAGS@
-NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
-NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
-NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
-NUNIT_CFLAGS = @NUNIT_CFLAGS@
-NUNIT_LIBS = @NUNIT_LIBS@
-OBJC = @OBJC@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OMF_DIR = @OMF_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
-POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-Q = @Q@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TAO_FREEGLUT_CFLAGS = @TAO_FREEGLUT_CFLAGS@
-TAO_FREEGLUT_LIBS = @TAO_FREEGLUT_LIBS@
-TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
-TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
-TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
-TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
-USE_NLS = @USE_NLS@
-V = @V@
-VERSION = @VERSION@
-XGETTEXT = @XGETTEXT@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-expanded_bindir = @expanded_bindir@
-expanded_datadir = @expanded_datadir@
-expanded_libdir = @expanded_libdir@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-shavedir = @shavedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-ASSEMBLY = Banshee.SoundMenu
-LINK = $(BANSHEE_LIBS) $(INDICATESHARP_LIBS) $(NOTIFYSHARP_LIBS) \
-	$(am__append_1)
-SOURCES = Banshee.SoundMenu/SoundMenuService.cs
-RESOURCES = SoundMenu.addin.xml
-
-# Initializers
- at ENABLE_SOUNDMENU_TRUE@MONO_BASE_PATH = 
- at ENABLE_SOUNDMENU_TRUE@MONO_ADDINS_PATH = 
-
-# All extensions are libraries
- at ENABLE_SOUNDMENU_TRUE@TARGET = library
- at ENABLE_SOUNDMENU_TRUE@DIR_BIN = $(top_builddir)/bin
-
-# Install Paths
- at ENABLE_SOUNDMENU_TRUE@DEFAULT_INSTALL_DIR = $(pkglibdir)
- at ENABLE_SOUNDMENU_TRUE@EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
- at ENABLE_SOUNDMENU_TRUE@UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
- at ENABLE_SOUNDMENU_TRUE@BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
- at ENABLE_SOUNDMENU_TRUE@SOURCES_BUILD = $(addprefix $(srcdir)/, \
- at ENABLE_SOUNDMENU_TRUE@	$(SOURCES)) \
- at ENABLE_SOUNDMENU_TRUE@	$(top_srcdir)/src/AssemblyInfo.cs
- at ENABLE_SOUNDMENU_TRUE@RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
- at ENABLE_SOUNDMENU_TRUE@RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
- at ENABLE_SOUNDMENU_TRUE@	-resource:$(resource),$(notdir $(resource)))
-
- at ENABLE_SOUNDMENU_TRUE@INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
- at ENABLE_SOUNDMENU_TRUE@THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
- at ENABLE_SOUNDMENU_TRUE@THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
- at ENABLE_SOUNDMENU_TRUE@ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
- at ENABLE_SOUNDMENU_TRUE@ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
- at ENABLE_SOUNDMENU_TRUE@INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
- at ENABLE_SOUNDMENU_TRUE@@ENABLE_TESTS_TRUE at ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
- at ENABLE_SOUNDMENU_TRUE@FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
- at ENABLE_SOUNDMENU_TRUE@DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
- at ENABLE_SOUNDMENU_TRUE@OUTPUT_FILES = \
- at ENABLE_SOUNDMENU_TRUE@	$(ASSEMBLY_FILE) \
- at ENABLE_SOUNDMENU_TRUE@	$(ASSEMBLY_FILE).mdb
-
- at ENABLE_SOUNDMENU_TRUE@moduledir = $(EXTENSION_DIR)
- at ENABLE_SOUNDMENU_TRUE@module_SCRIPTS = $(OUTPUT_FILES)
- at ENABLE_SOUNDMENU_FALSE@EXTRA_DIST = $(SOURCES) $(RESOURCES)
- at ENABLE_SOUNDMENU_TRUE@EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_SOUNDMENU_TRUE@CLEANFILES = $(OUTPUT_FILES)
- at ENABLE_SOUNDMENU_TRUE@DISTCLEANFILES = *.pidb
- at ENABLE_SOUNDMENU_TRUE@MAINTAINERCLEANFILES = Makefile.in
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build/build.mk $(top_srcdir)/build/build.environment.mk $(top_srcdir)/build/build.rules.mk $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/SoundMenu/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/SoundMenu/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-moduleSCRIPTS: $(module_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(moduledir)" || $(MKDIR_P) "$(DESTDIR)$(moduledir)"
-	@list='$(module_SCRIPTS)'; test -n "$(moduledir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n' \
-	    -e 'h;s|.*|.|' \
-	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-	      if (++n[d] == $(am__install_max)) { \
-		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-	    else { print "f", d "/" $$4, $$1 } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	     test -z "$$files" || { \
-	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(moduledir)$$dir'"; \
-	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(moduledir)$$dir" || exit $$?; \
-	     } \
-	; done
-
-uninstall-moduleSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(module_SCRIPTS)'; test -n "$(moduledir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(moduledir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(moduledir)" && rm -f $$files
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(SCRIPTS)
-installdirs:
-	for dir in "$(DESTDIR)$(moduledir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- at ENABLE_SOUNDMENU_FALSE@install-data-hook:
- at ENABLE_SOUNDMENU_FALSE@uninstall-hook:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-moduleSCRIPTS
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-moduleSCRIPTS
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: install-am install-data-am install-strip uninstall-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-data-hook install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-moduleSCRIPTS install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am uninstall uninstall-am uninstall-hook \
-	uninstall-moduleSCRIPTS
-
-
- at ENABLE_SOUNDMENU_TRUE@all: $(ASSEMBLY_FILE) theme-icons
-
- at ENABLE_SOUNDMENU_TRUE@run: 
- at ENABLE_SOUNDMENU_TRUE@	@pushd $(top_builddir); \
- at ENABLE_SOUNDMENU_TRUE@	make run \
- at ENABLE_SOUNDMENU_TRUE@	popd;
-
- at ENABLE_SOUNDMENU_TRUE@build-debug:
- at ENABLE_SOUNDMENU_TRUE@	@echo $(DEP_LINK)
-
- at ENABLE_SOUNDMENU_TRUE@$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
-
- at ENABLE_SOUNDMENU_TRUE@$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
- at ENABLE_SOUNDMENU_TRUE@	@mkdir -p $(top_builddir)/bin
- at ENABLE_SOUNDMENU_TRUE@	$(MCS) \
- at ENABLE_SOUNDMENU_TRUE@		$(GMCS_FLAGS) \
- at ENABLE_SOUNDMENU_TRUE@		$(ENABLE_TESTS_FLAG) \
- at ENABLE_SOUNDMENU_TRUE@		$(ASSEMBLY_BUILD_FLAGS) \
- at ENABLE_SOUNDMENU_TRUE@		-debug -target:$(TARGET) -out:$@ \
- at ENABLE_SOUNDMENU_TRUE@		$(BUILD_DEFINES) \
- at ENABLE_SOUNDMENU_TRUE@		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
- at ENABLE_SOUNDMENU_TRUE@	@if [ -e $(srcdir)/$(notdir $@.config) ]; then \
- at ENABLE_SOUNDMENU_TRUE@		cp $(srcdir)/$(notdir $@.config) $(top_builddir)/bin; \
- at ENABLE_SOUNDMENU_TRUE@	fi;
- at ENABLE_SOUNDMENU_TRUE@	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
- at ENABLE_SOUNDMENU_TRUE@		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
- at ENABLE_SOUNDMENU_TRUE@	fi;
-
- at ENABLE_SOUNDMENU_TRUE@theme-icons: $(THEME_ICONS_SOURCE)
- at ENABLE_SOUNDMENU_TRUE@	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
-
- at ENABLE_SOUNDMENU_TRUE@install-data-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_SOUNDMENU_TRUE@	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_SOUNDMENU_TRUE@	$(EXTRA_INSTALL_DATA_HOOK)
-
- at ENABLE_SOUNDMENU_TRUE@uninstall-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_SOUNDMENU_TRUE@	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_SOUNDMENU_TRUE@	$(EXTRA_UNINSTALL_HOOK)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/StreamRecorder/Makefile.in b/src/StreamRecorder/Makefile.in
index 0dd64b4..e6b63e4 100644
--- a/src/StreamRecorder/Makefile.in
+++ b/src/StreamRecorder/Makefile.in
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -395,7 +396,7 @@ RESOURCES = \
 @ENABLE_STREAMRECORDER_TRUE at module_SCRIPTS = $(OUTPUT_FILES)
 @ENABLE_STREAMRECORDER_FALSE at EXTRA_DIST = $(SOURCES) $(RESOURCES)
 @ENABLE_STREAMRECORDER_TRUE at EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_STREAMRECORDER_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_STREAMRECORDER_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_STREAMRECORDER_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_STREAMRECORDER_TRUE at MAINTAINERCLEANFILES = Makefile.in
 all: all-am
@@ -629,6 +630,17 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_STREAMRECORDER_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_STREAMRECORDER_TRUE@check: test
+
 @ENABLE_STREAMRECORDER_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_STREAMRECORDER_TRUE at run: 
diff --git a/src/Telepathy/Banshee.Telepathy/Makefile.in b/src/Telepathy/Banshee.Telepathy/Makefile.in
index 337477a..ac7b9a2 100644
--- a/src/Telepathy/Banshee.Telepathy/Makefile.in
+++ b/src/Telepathy/Banshee.Telepathy/Makefile.in
@@ -50,6 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -60,10 +61,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -117,8 +117,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -182,8 +184,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -227,6 +227,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -261,12 +262,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -481,7 +482,7 @@ RESOURCES = \
 @ENABLE_TELEPATHY_TRUE@	$(RESOURCES_EXPANDED) \
 @ENABLE_TELEPATHY_TRUE@	$(THEME_ICONS_SOURCE) \
 @ENABLE_TELEPATHY_TRUE@	Banshee.Telepathy.dll.config
- at ENABLE_TELEPATHY_TRUE@CLEANFILES = $(OUTPUT_FILES)
+ at ENABLE_TELEPATHY_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
 @ENABLE_TELEPATHY_TRUE at DISTCLEANFILES = *.pidb
 @ENABLE_TELEPATHY_TRUE at MAINTAINERCLEANFILES = Makefile.in
 @ENABLE_TELEPATHY_TRUE at module_DATA = Banshee.Telepathy.dll.config
@@ -736,6 +737,17 @@ uninstall-am: uninstall-moduleDATA uninstall-moduleSCRIPTS
 	uninstall-hook uninstall-moduleDATA uninstall-moduleSCRIPTS
 
 
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_TRUE@	fi
+
+ at ENABLE_TELEPATHY_TRUE@@ENABLE_TESTS_FALSE at test:
+
+ at ENABLE_TELEPATHY_TRUE@check: test
+
 @ENABLE_TELEPATHY_TRUE at all: $(ASSEMBLY_FILE) theme-icons
 
 @ENABLE_TELEPATHY_TRUE at run: 
diff --git a/src/Telepathy/Makefile.in b/src/Telepathy/Makefile.in
index a0b71e3..888d58c 100644
--- a/src/Telepathy/Makefile.in
+++ b/src/Telepathy/Makefile.in
@@ -45,6 +45,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -55,10 +56,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -129,8 +129,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -194,8 +196,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -239,6 +239,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -273,12 +274,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff --git a/src/UbuntuOneMusicStore/Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs b/src/UbuntuOneMusicStore/Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs
deleted file mode 100644
index c2e8669..0000000
--- a/src/UbuntuOneMusicStore/Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// UbuntuOneMusicStoreSource.cs
-//
-// Authors:
-//   Jo Shields <directhex at apebox.org>
-//
-// Copyright (C) 2010 Jo Shields
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using Mono.Addins;
-using Gdk;
-
-using Hyena;
-
-using Banshee.Collection;
-using Banshee.Gui;
-using Banshee.ServiceStack;
-using Banshee.Sources;
-using Banshee.Sources.Gui;
-
-namespace Banshee.UbuntuOneMusicStore
-{
-    public class UbuntuOneMusicStoreSource : Source
-    {
-        // In the sources TreeView, sets the order value for this source, small on top
-        const int sort_order = 190;
-        CustomView custom_view;
-
-        public UbuntuOneMusicStoreSource () : base (
-            AddinManager.CurrentLocalizer.GetString ("Ubuntu One Music Store"),
-            AddinManager.CurrentLocalizer.GetString ("Ubuntu One Music Store"),
-            sort_order, "ubuntu-one-music-store")
-        {
-            Pixbuf icon = new Pixbuf (System.Reflection.Assembly.GetExecutingAssembly ()
-                                      .GetManifestResourceStream ("ubuntuone.png"));
-            Properties.Set<Pixbuf> ("Icon.Pixbuf_22", icon.ScaleSimple (22, 22, InterpType.Bilinear));
-        }
-
-        // A count of 0 will be hidden in the source TreeView
-        public override int Count {
-            get { return 0; }
-        }
-
-        // Defer any UI creation until it's actually needed.
-        public override void Activate ()
-        {
-            if (custom_view == null) {
-                Properties.Set<ISourceContents> ("Nereid.SourceContents", custom_view = new CustomView ());
-            }
-
-            base.Activate ();
-            Log.Debug ("U1MS: Initialized");
-        }
-
-        public class StoreWrapper: UbuntuOne.U1MusicStore, IDisableKeybindings
-        {
-            string U1LibraryLocation = System.IO.Path.Combine (System.IO.Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), ".ubuntuone"), "Purchased from Ubuntu One");
-
-            public StoreWrapper (): base ()
-            {
-                this.PreviewMp3 += PlayMP3Preview;
-                this.DownloadFinished += AddDownloadToLibrary;
-                this.PlayLibrary += PlayU1MSLibrary;
-                this.UrlLoaded += U1MSUrlLoaded;
-            }
-
-            private void PlayMP3Preview (object Sender, UbuntuOne.PreviewMp3Args a)
-            {
-                Log.Debug ("U1MS: Playing preview: ", a.Url );
-                TrackInfo PreviewTrack = new TrackInfo ();
-                PreviewTrack.TrackTitle = a.Title;
-                PreviewTrack.ArtistName = AddinManager.CurrentLocalizer.GetString ("Track Preview");
-                PreviewTrack.AlbumTitle = AddinManager.CurrentLocalizer.GetString ("Ubuntu One Music Store");
-                PreviewTrack.Uri = new SafeUri (a.Url);
-                ServiceManager.PlayerEngine.OpenPlay (PreviewTrack);
-                ServiceManager.PlaybackController.StopWhenFinished = true;
-            }
-
-            private void AddDownloadToLibrary (object Sender, UbuntuOne.DownloadFinishedArgs a)
-            {
-                Log.Debug ("U1MS: Track downloaded: ", a.Path);
-                ServiceManager.Get<Banshee.Library.LibraryImportManager> ().ImportTrack (new SafeUri (a.Path));
-                ServiceManager.Get<Banshee.Library.LibraryImportManager> ().NotifyAllSources ();
-            }
-
-            private void PlayU1MSLibrary (object Sender, UbuntuOne.PlayLibraryArgs a)
-            {
-                Log.Debug ("U1MS: Playing from library: ", a.Path);
-                Log.Debug ("U1MS: U1 library location: ", U1LibraryLocation);
-                int track_id = Banshee.Collection.Database.DatabaseTrackInfo.GetTrackIdForUri (System.IO.Path.Combine (U1LibraryLocation, a.Path));
-                if (track_id > 0)
-                {
-                    var track = Banshee.Collection.Database.DatabaseTrackInfo.Provider.FetchSingle (track_id);
-                    ServiceManager.PlaybackController.NextSource = ServiceManager.SourceManager.MusicLibrary;
-                    ServiceManager.PlayerEngine.OpenPlay (track);
-                }
-            }
-
-            private void U1MSUrlLoaded (object Sender, UbuntuOne.UrlLoadedArgs a)
-            {
-                Log.Debug ("U1MS: Url Loaded: ", a.Url);
-            }
-        }
-
-        private class CustomView : ISourceContents
-        {
-            StoreWrapper store = new StoreWrapper ();
-
-            public bool SetSource (ISource source) { return true; }
-            public void ResetSource () { }
-            public Gtk.Widget Widget { get { return store; } }
-            public ISource Source { get { return null; } }
-        }
-    }
-}
diff --git a/src/UbuntuOneMusicStore/Makefile.am b/src/UbuntuOneMusicStore/Makefile.am
deleted file mode 100644
index f1f47e6..0000000
--- a/src/UbuntuOneMusicStore/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-ASSEMBLY = Banshee.UbuntuOneMusicStore
-LINK = $(BANSHEE_LIBS) $(UBUNTUONESHARP_LIBS)
-
-SOURCES = Banshee.UbuntuOneMusicStore/UbuntuOneMusicStoreSource.cs
-
-RESOURCES =  \
-	Resources/ubuntuone.png \
-	UbuntuOneMusicStore.addin.xml
-
-if ENABLE_U1MS
-include $(top_srcdir)/build/build.mk
-else
-EXTRA_DIST = $(SOURCES) $(RESOURCES)
-endif
diff --git a/src/UbuntuOneMusicStore/Resources/ubuntuone.png b/src/UbuntuOneMusicStore/Resources/ubuntuone.png
deleted file mode 100644
index dca1f8d..0000000
Binary files a/src/UbuntuOneMusicStore/Resources/ubuntuone.png and /dev/null differ
diff --git a/src/UbuntuOneMusicStore/UbuntuOneMusicStore.addin.xml b/src/UbuntuOneMusicStore/UbuntuOneMusicStore.addin.xml
deleted file mode 100644
index 2080ab7..0000000
--- a/src/UbuntuOneMusicStore/UbuntuOneMusicStore.addin.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Addin 
-    id="Banshee.UbuntuOneMusicStore"
-    version="1.0"
-    compatVersion="1.0"
-    copyright="Copyright © 2010 Jo Shields. Licensed under the MIT X11 license."
-    name="Ubuntu One Music Store"
-    category="Community Extensions"
-    description="This extension grants access to the Ubuntu One Music Store, powered by 7digital."
-    author="Jo Shields"
-    url="http://one.ubuntu.com/"
-    defaultEnabled="false">
-
-  <Localizer type="Gettext" catalog="banshee-community-extensions" location="../../../share/locale"/>
-
-  <Dependencies>
-    <Addin id="Banshee.Services" version="1.0"/>
-    <Addin id="Banshee.ThickClient" version="1.0"/>
-  </Dependencies>
-
-  <!-- Define a Source extension.  This will instantiate a new Source object,
-       listed in the left-most Source TreeView. -->
-  <Extension path="/Banshee/SourceManager/Source">
-    <Source class="Banshee.UbuntuOneMusicStore.UbuntuOneMusicStoreSource"/>
-  </Extension>
-
-</Addin>
diff --git a/src/ZeitgeistDataprovider/Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs b/src/ZeitgeistDataprovider/Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs
new file mode 100644
index 0000000..1e605cf
--- /dev/null
+++ b/src/ZeitgeistDataprovider/Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs
@@ -0,0 +1,147 @@
+//
+// ZeitgeistDataprovider.cs
+//
+// Authors:
+//   Manish Sinha <mail at manishsinha.net>
+//   Randal Barlow <email dot tehk at gmail dot com>
+//
+// Copyright (C) 2010 Manish Sinha
+// Copyright (C) 2010 Randal Barlow
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Banshee.ServiceStack;
+using Banshee.Collection;
+
+using Hyena;
+using Zeitgeist;
+using Zeitgeist.Datamodel;
+using Banshee.MediaEngine;
+
+namespace Banshee.Zeitgeist
+{
+    public class ZeitgeistDataprovider : IExtensionService, IDisposable
+    {
+        private LogClient client;
+        private TrackInfo current_track;
+
+        string IService.ServiceName {
+            get { return "ZeitgeistService"; }
+        }
+        
+        public ZeitgeistDataprovider()
+        {}
+        
+        void IExtensionService.Initialize()
+        {
+            try {
+                client = new LogClient ();
+                if (client != null) {
+                    Log.Debug("Zeitgeist client created");
+
+                    ServiceManager.PlaybackController.Stopped += HandleServiceManagerPlaybackControllerStopped;
+
+                    ServiceManager.PlayerEngine.ConnectEvent(playerEvent_Handler, PlayerEvent.StartOfStream);
+
+                } else {
+                    Log.Warning ("Could not create Zeitgeist client");
+                }
+            } catch (Exception e) {
+                Log.Exception (e);
+            }
+        }
+
+        void playerEvent_Handler(PlayerEventArgs e)
+        {
+            if(e.Event == PlayerEvent.StartOfStream && current_track != ServiceManager.PlaybackController.CurrentTrack)
+            {
+                try {
+                    if (current_track != null) {
+                        StopTrack (current_track);
+                    }
+
+                    Log.Debug("TrackStarted: "+ServiceManager.PlaybackController.CurrentTrack.TrackTitle);
+                    Event ev = CreateZgEvent (ServiceManager.PlaybackController.CurrentTrack, Interpretation.Instance.EventInterpretation.AccessEvent);
+                    client.InsertEvents (new List<Event> () {ev});
+
+                    current_track = ServiceManager.PlaybackController.CurrentTrack;
+                } catch (Exception ex) {
+                    Log.Exception (ex);
+                }
+            }
+        }
+
+        void HandleServiceManagerPlaybackControllerStopped (object sender, EventArgs e)
+        {
+            StopTrack (ServiceManager.PlaybackController.PriorTrack);
+        }
+
+        void StopTrack (TrackInfo track)
+        {
+            try {
+                Event ev = CreateZgEvent (track, Interpretation.Instance.EventInterpretation.LeaveEvent);
+                client.InsertEvents (new List<Event> () {ev});
+
+                current_track = null;
+            } catch (Exception ex) {
+                Log.Exception (ex);
+            }
+        }
+
+        private Event CreateZgEvent(TrackInfo track, NameUri event_type)
+        {
+            string uri = track.Uri.AbsoluteUri;
+            string trackname = track.TrackTitle;
+            string mimetype = track.MimeType;
+            string album = track.AlbumTitle;
+            string artist = track.ArtistName;
+
+            Event ev = new Event ();
+
+            ev.Actor = "application://banshee-1.desktop";
+            ev.Timestamp = DateTime.Now;
+            ev.Manifestation = Manifestation.Instance.EventManifestation.UserActivity;
+            ev.Interpretation = event_type;
+
+            Subject sub = new Subject ();
+            sub.Uri = uri;
+            sub.Interpretation = Interpretation.Instance.Media.Audio;
+            sub.Manifestation = Manifestation.Instance.FileDataObject.FileDataObject;
+            sub.MimeType = mimetype;
+            sub.Text = String.Format ("{0} - {1} - {2}", trackname, artist,album);
+
+            ev.Subjects.Add(sub);
+
+            return ev;
+        }
+
+        void IDisposable.Dispose()
+        {
+            ServiceManager.PlaybackController.Stopped -= HandleServiceManagerPlaybackControllerStopped;
+            ServiceManager.PlayerEngine.DisconnectEvent(playerEvent_Handler);
+
+            client = null;
+        }
+    }
+}
diff --git a/src/ZeitgeistDataprovider/Makefile.am b/src/ZeitgeistDataprovider/Makefile.am
new file mode 100644
index 0000000..0631d87
--- /dev/null
+++ b/src/ZeitgeistDataprovider/Makefile.am
@@ -0,0 +1,13 @@
+ASSEMBLY = Banshee.ZeitgeistDataprovider
+LINK = $(BANSHEE_LIBS) $(ZEITGEIST_SHARP_LIBS)
+TARGET = library
+
+SOURCES = Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs
+
+RESOURCES = ZeitgeistDataprovider.addin.xml
+
+if ENABLE_ZEITGEISTDATAPROVIDER
+include $(top_srcdir)/build/build.mk
+else
+EXTRA_DIST = $(SOURCES) $(RESOURCES)
+endif
diff --git a/src/Ampache/Makefile.in b/src/ZeitgeistDataprovider/Makefile.in
similarity index 72%
copy from src/Ampache/Makefile.in
copy to src/ZeitgeistDataprovider/Makefile.in
index 9117b69..6effc29 100644
--- a/src/Ampache/Makefile.in
+++ b/src/ZeitgeistDataprovider/Makefile.in
@@ -38,8 +38,8 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(top_srcdir)/build/build.environment.mk \
 	$(top_srcdir)/build/build.mk \
 	$(top_srcdir)/build/build.rules.mk
- at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE at am__append_1 = " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
-subdir = src/Ampache
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE at am__append_1 = " $(NUNIT_LIBS) $(MONO_NUNIT_LIBS)"
+subdir = src/ZeitgeistDataprovider
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/ampache.m4 \
@@ -49,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/clutterflow.m4 \
 	$(top_srcdir)/build/m4/extensions/common.m4 \
 	$(top_srcdir)/build/m4/extensions/coverwallpaper.m4 \
+	$(top_srcdir)/build/m4/extensions/jamendo.m4 \
 	$(top_srcdir)/build/m4/extensions/lastfmfingerprint.m4 \
 	$(top_srcdir)/build/m4/extensions/lcd.m4 \
 	$(top_srcdir)/build/m4/extensions/lirc.m4 \
@@ -59,10 +60,9 @@ am__aclocal_m4_deps = $(top_srcdir)/build/m4/extensions/alarmclock.m4 \
 	$(top_srcdir)/build/m4/extensions/openvp.m4 \
 	$(top_srcdir)/build/m4/extensions/radiostationfetcher.m4 \
 	$(top_srcdir)/build/m4/extensions/randombylastfm.m4 \
-	$(top_srcdir)/build/m4/extensions/soundmenu.m4 \
 	$(top_srcdir)/build/m4/extensions/streamrecorder.m4 \
 	$(top_srcdir)/build/m4/extensions/telepathy.m4 \
-	$(top_srcdir)/build/m4/extensions/ubuntuonemusicstore.m4 \
+	$(top_srcdir)/build/m4/extensions/zeitgeistdp.m4 \
 	$(top_srcdir)/build/m4/shave/shave.m4 \
 	$(top_srcdir)/build/m4/shamrock/expansions.m4 \
 	$(top_srcdir)/build/m4/shamrock/gnome-doc.m4 \
@@ -115,8 +115,10 @@ AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BANSHEE_CFLAGS = @BANSHEE_CFLAGS@
+BANSHEE_EXTDIR = @BANSHEE_EXTDIR@
 BANSHEE_LASTFM_CFLAGS = @BANSHEE_LASTFM_CFLAGS@
 BANSHEE_LASTFM_LIBS = @BANSHEE_LASTFM_LIBS@
+BANSHEE_LIBDIR = @BANSHEE_LIBDIR@
 BANSHEE_LIBS = @BANSHEE_LIBS@
 BANSHEE_NOWPLAYING_CFLAGS = @BANSHEE_NOWPLAYING_CFLAGS@
 BANSHEE_NOWPLAYING_LIBS = @BANSHEE_NOWPLAYING_LIBS@
@@ -180,8 +182,6 @@ GREP = @GREP@
 GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
 GSTREAMER_LIBS = @GSTREAMER_LIBS@
 HELP_DIR = @HELP_DIR@
-INDICATESHARP_CFLAGS = @INDICATESHARP_CFLAGS@
-INDICATESHARP_LIBS = @INDICATESHARP_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -225,6 +225,7 @@ NOTIFYSHARP_LIBS = @NOTIFYSHARP_LIBS@
 NOTIFY_SHARP_CFLAGS = @NOTIFY_SHARP_CFLAGS@
 NOTIFY_SHARP_LIBS = @NOTIFY_SHARP_LIBS@
 NUNIT_CFLAGS = @NUNIT_CFLAGS@
+NUNIT_CONSOLE = @NUNIT_CONSOLE@
 NUNIT_LIBS = @NUNIT_LIBS@
 OBJC = @OBJC@
 OBJDUMP = @OBJDUMP@
@@ -259,12 +260,12 @@ TAO_OPENGL_CFLAGS = @TAO_OPENGL_CFLAGS@
 TAO_OPENGL_LIBS = @TAO_OPENGL_LIBS@
 TAO_SDL_CFLAGS = @TAO_SDL_CFLAGS@
 TAO_SDL_LIBS = @TAO_SDL_LIBS@
-UBUNTUONESHARP_CFLAGS = @UBUNTUONESHARP_CFLAGS@
-UBUNTUONESHARP_LIBS = @UBUNTUONESHARP_LIBS@
 USE_NLS = @USE_NLS@
 V = @V@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+ZEITGEIST_SHARP_CFLAGS = @ZEITGEIST_SHARP_CFLAGS@
+ZEITGEIST_SHARP_LIBS = @ZEITGEIST_SHARP_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -322,95 +323,52 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-ASSEMBLY = Banshee.Ampache
-LINK = $(BANSHEE_LIBS) -r:System.Xml.Linq $(am__append_1)
-SOURCES = \
-	Banshee.Ampache/AmpachePreferences.cs \
-	Banshee.Ampache/AmpacheSource.cs \
-	Banshee.Ampache/AmpacheSourceContents.cs \
-	Banshee.Ampache/Entities/AmpacheAlbum.cs \
-	Banshee.Ampache/Entities/AmpacheArtist.cs \
-	Banshee.Ampache/Entities/AmpacheSong.cs \
-	Banshee.Ampache/Entities/Handshake.cs \
-	Banshee.Ampache/Entities/IEntity.cs \
-	Banshee.Ampache/Entities/IRatable.cs \
-	Banshee.Ampache/Entities/ITagable.cs \
-	Banshee.Ampache/Entities/Tag.cs \
-	Banshee.Ampache/Gui/AlbumLabel.cs \
-	Banshee.Ampache/Gui/AmpacheView.cs \
-	Banshee.Ampache/Gui/ArtistLabel.cs \
-	Banshee.Ampache/Gui/PlaylistLabel.cs \
-	Banshee.Ampache/Gui/PreferenceView.cs \
-	Banshee.Ampache/Gui/SongLabel.cs \
-	Banshee.Ampache/IO/AlbumFactory.cs \
-	Banshee.Ampache/IO/AlbumSelector.cs \
-	Banshee.Ampache/IO/AmpacheSelectionFactory.cs \
-	Banshee.Ampache/IO/AmpacheSelectorBase.cs \
-	Banshee.Ampache/IO/ArtistFactory.cs \
-	Banshee.Ampache/IO/ArtistSelector.cs \
-	Banshee.Ampache/IO/Authenticate.cs \
-	Banshee.Ampache/IO/FactoryBase.cs \
-	Banshee.Ampache/IO/FactoryBaseRatable.cs \
-	Banshee.Ampache/IO/FactoryBaseTagable.cs \
-	Banshee.Ampache/IO/IAmpacheSelector.cs \
-	Banshee.Ampache/IO/IEntityFactory.cs \
-	Banshee.Ampache/IO/PlaylistFactory.cs \
-	Banshee.Ampache/IO/PlaylistSelector.cs \
-	Banshee.Ampache/IO/SongFactory.cs \
-	Banshee.Ampache/IO/SongSelector.cs \
-	Banshee.Ampache/Logic/AmpacheAlbumExtensions.cs \
-	Banshee.Ampache/Logic/AmpacheSongExtensions.cs \
-	Banshee.Ampache/Logic/PlayQueue.cs \
-	gtk-gui/Banshee.Ampache.AmpacheView.cs \
-	gtk-gui/Banshee.Ampache.PreferenceView.cs \
-	gtk-gui/generated.cs
-
-RESOURCES = \
-	Ampache.addin.xml \
-	gtk-gui/gui.stetic \
-	Resources/ampache.png
+ASSEMBLY = Banshee.ZeitgeistDataprovider
+LINK = $(BANSHEE_LIBS) $(ZEITGEIST_SHARP_LIBS) $(am__append_1)
 
+# All extensions are libraries
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@TARGET = library
+TARGET = library
+SOURCES = Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs
+RESOURCES = ZeitgeistDataprovider.addin.xml
 
 # Initializers
- at ENABLE_AMPACHE_TRUE@MONO_BASE_PATH = 
- at ENABLE_AMPACHE_TRUE@MONO_ADDINS_PATH = 
-
-# All extensions are libraries
- at ENABLE_AMPACHE_TRUE@TARGET = library
- at ENABLE_AMPACHE_TRUE@DIR_BIN = $(top_builddir)/bin
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@MONO_BASE_PATH = 
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@MONO_ADDINS_PATH = 
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@DIR_BIN = $(top_builddir)/bin
 
 # Install Paths
- at ENABLE_AMPACHE_TRUE@DEFAULT_INSTALL_DIR = $(pkglibdir)
- at ENABLE_AMPACHE_TRUE@EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
- at ENABLE_AMPACHE_TRUE@UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
- at ENABLE_AMPACHE_TRUE@BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
- at ENABLE_AMPACHE_TRUE@SOURCES_BUILD = $(addprefix $(srcdir)/, \
- at ENABLE_AMPACHE_TRUE@	$(SOURCES)) \
- at ENABLE_AMPACHE_TRUE@	$(top_srcdir)/src/AssemblyInfo.cs
- at ENABLE_AMPACHE_TRUE@RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
- at ENABLE_AMPACHE_TRUE@RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
- at ENABLE_AMPACHE_TRUE@	-resource:$(resource),$(notdir $(resource)))
-
- at ENABLE_AMPACHE_TRUE@INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
- at ENABLE_AMPACHE_TRUE@THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
- at ENABLE_AMPACHE_TRUE@THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
- at ENABLE_AMPACHE_TRUE@ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
- at ENABLE_AMPACHE_TRUE@ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
- at ENABLE_AMPACHE_TRUE@INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
- at ENABLE_AMPACHE_TRUE@@ENABLE_TESTS_TRUE at ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
- at ENABLE_AMPACHE_TRUE@FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
- at ENABLE_AMPACHE_TRUE@DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
- at ENABLE_AMPACHE_TRUE@OUTPUT_FILES = \
- at ENABLE_AMPACHE_TRUE@	$(ASSEMBLY_FILE) \
- at ENABLE_AMPACHE_TRUE@	$(ASSEMBLY_FILE).mdb
-
- at ENABLE_AMPACHE_TRUE@moduledir = $(EXTENSION_DIR)
- at ENABLE_AMPACHE_TRUE@module_SCRIPTS = $(OUTPUT_FILES)
- at ENABLE_AMPACHE_FALSE@EXTRA_DIST = $(SOURCES) $(RESOURCES)
- at ENABLE_AMPACHE_TRUE@EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
- at ENABLE_AMPACHE_TRUE@CLEANFILES = $(OUTPUT_FILES)
- at ENABLE_AMPACHE_TRUE@DISTCLEANFILES = *.pidb
- at ENABLE_AMPACHE_TRUE@MAINTAINERCLEANFILES = Makefile.in
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@DEFAULT_INSTALL_DIR = $(pkglibdir)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@SOURCES_BUILD = $(addprefix \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(srcdir)/, $(SOURCES)) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(top_srcdir)/src/AssemblyInfo.cs
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	-resource:$(resource),$(notdir $(resource)))
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE at ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@OUTPUT_FILES = \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(ASSEMBLY_FILE) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(ASSEMBLY_FILE).mdb
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@moduledir = $(EXTENSION_DIR)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@module_SCRIPTS = $(OUTPUT_FILES)
+ at ENABLE_ZEITGEISTDATAPROVIDER_FALSE@EXTRA_DIST = $(SOURCES) $(RESOURCES)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@CLEANFILES = $(OUTPUT_FILES) TestResult.xml
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@DISTCLEANFILES = *.pidb
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@MAINTAINERCLEANFILES = Makefile.in
 all: all-am
 
 .SUFFIXES:
@@ -423,9 +381,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Ampache/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/ZeitgeistDataprovider/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/Ampache/Makefile
+	  $(AUTOMAKE) --foreign src/ZeitgeistDataprovider/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -556,8 +514,8 @@ maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
 	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- at ENABLE_AMPACHE_FALSE@install-data-hook:
- at ENABLE_AMPACHE_FALSE@uninstall-hook:
+ at ENABLE_ZEITGEISTDATAPROVIDER_FALSE@install-data-hook:
+ at ENABLE_ZEITGEISTDATAPROVIDER_FALSE@uninstall-hook:
 clean: clean-am
 
 clean-am: clean-generic clean-libtool mostlyclean-am
@@ -642,44 +600,55 @@ uninstall-am: uninstall-moduleSCRIPTS
 	uninstall-moduleSCRIPTS
 
 
- at ENABLE_AMPACHE_TRUE@all: $(ASSEMBLY_FILE) theme-icons
-
- at ENABLE_AMPACHE_TRUE@run: 
- at ENABLE_AMPACHE_TRUE@	@pushd $(top_builddir); \
- at ENABLE_AMPACHE_TRUE@	make run \
- at ENABLE_AMPACHE_TRUE@	popd;
-
- at ENABLE_AMPACHE_TRUE@build-debug:
- at ENABLE_AMPACHE_TRUE@	@echo $(DEP_LINK)
-
- at ENABLE_AMPACHE_TRUE@$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
-
- at ENABLE_AMPACHE_TRUE@$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
- at ENABLE_AMPACHE_TRUE@	@mkdir -p $(top_builddir)/bin
- at ENABLE_AMPACHE_TRUE@	$(MCS) \
- at ENABLE_AMPACHE_TRUE@		$(GMCS_FLAGS) \
- at ENABLE_AMPACHE_TRUE@		$(ENABLE_TESTS_FLAG) \
- at ENABLE_AMPACHE_TRUE@		$(ASSEMBLY_BUILD_FLAGS) \
- at ENABLE_AMPACHE_TRUE@		-debug -target:$(TARGET) -out:$@ \
- at ENABLE_AMPACHE_TRUE@		$(BUILD_DEFINES) \
- at ENABLE_AMPACHE_TRUE@		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
- at ENABLE_AMPACHE_TRUE@	@if [ -e $(srcdir)/$(notdir $@.config) ]; then \
- at ENABLE_AMPACHE_TRUE@		cp $(srcdir)/$(notdir $@.config) $(top_builddir)/bin; \
- at ENABLE_AMPACHE_TRUE@	fi;
- at ENABLE_AMPACHE_TRUE@	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
- at ENABLE_AMPACHE_TRUE@		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
- at ENABLE_AMPACHE_TRUE@	fi;
-
- at ENABLE_AMPACHE_TRUE@theme-icons: $(THEME_ICONS_SOURCE)
- at ENABLE_AMPACHE_TRUE@	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
-
- at ENABLE_AMPACHE_TRUE@install-data-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_AMPACHE_TRUE@	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_AMPACHE_TRUE@	$(EXTRA_INSTALL_DATA_HOOK)
-
- at ENABLE_AMPACHE_TRUE@uninstall-hook: $(THEME_ICONS_SOURCE)
- at ENABLE_AMPACHE_TRUE@	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
- at ENABLE_AMPACHE_TRUE@	$(EXTRA_UNINSTALL_HOOK)
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE at test: $(ASSEMBLY_FILE)
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	if test "x$(TEST_ASSEMBLY)" = "xyes"; then \
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		LD_LIBRARY_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}" \
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		MONO_PATH="$(BANSHEE_LIBDIR):$(BANSHEE_EXTDIR):$(EXTENSION_DIR)/..:$(EXTENSION_DIR)${MONO_PATH+:$MONO_PATH}" \
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(NUNIT_CONSOLE) -nologo -noshadow $(ASSEMBLY_FILE); \
+ at ENABLE_TESTS_TRUE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	fi
+
+ at ENABLE_TESTS_FALSE@@ENABLE_ZEITGEISTDATAPROVIDER_TRUE at test:
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@check: test
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@all: $(ASSEMBLY_FILE) theme-icons
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@run: 
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@pushd $(top_builddir); \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	make run \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	popd;
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@build-debug:
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@echo $(DEP_LINK)
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@mkdir -p $(top_builddir)/bin
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(MCS) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(GMCS_FLAGS) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(ENABLE_TESTS_FLAG) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(ASSEMBLY_BUILD_FLAGS) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		-debug -target:$(TARGET) -out:$@ \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(BUILD_DEFINES) \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@if [ -e $(srcdir)/$(notdir $@.config) ]; then \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		cp $(srcdir)/$(notdir $@.config) $(top_builddir)/bin; \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	fi;
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	fi;
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@theme-icons: $(THEME_ICONS_SOURCE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@install-data-hook: $(THEME_ICONS_SOURCE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(EXTRA_INSTALL_DATA_HOOK)
+
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@uninstall-hook: $(THEME_ICONS_SOURCE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+ at ENABLE_ZEITGEISTDATAPROVIDER_TRUE@	$(EXTRA_UNINSTALL_HOOK)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/SoundMenu/SoundMenu.addin.xml b/src/ZeitgeistDataprovider/ZeitgeistDataprovider.addin.xml
similarity index 54%
rename from src/SoundMenu/SoundMenu.addin.xml
rename to src/ZeitgeistDataprovider/ZeitgeistDataprovider.addin.xml
index 285f93a..fcf69c7 100644
--- a/src/SoundMenu/SoundMenu.addin.xml
+++ b/src/ZeitgeistDataprovider/ZeitgeistDataprovider.addin.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Addin
-    id="Banshee.SoundMenu"
+<Addin 
+    id="Banshee.ZeitgeistDataprovider"
     version="1.0"
     compatVersion="1.0"
-    copyright="Copyright © 2010 Bertrand Lorentz. Licensed under the MIT X11 license."
-    name="Sound Menu integration for Banshee"
+    copyright="Copyright © 2010 Manish Sinha. Licensed under the MIT X11 license."
+    name="Zeitgeist Dataprovider"
     category="Community Extensions"
-    description="Control Banshee from the Sound Menu."
-    author="Bertrand Lorentz"
-    url="http://banshee-project.org/"
+    description="Publish your Banshee activities into Zeitgeist"
+    author="Manish Sinha"
+    url="http://zeitgeist-project.org/"
     defaultEnabled="false">
 
   <Localizer type="Gettext" catalog="banshee-community-extensions" location="../../../share/locale"/>
@@ -16,11 +16,10 @@
   <Dependencies>
     <Addin id="Banshee.Services" version="1.0"/>
     <Addin id="Banshee.ThickClient" version="1.0"/>
-    <Addin id="Banshee.Mpris" version="1.0"/>
   </Dependencies>
 
   <Extension path="/Banshee/ServiceManager/Service">
-    <Service class="Banshee.SoundMenu.SoundMenuService"/>
+    <Service class="Banshee.Zeitgeist.ZeitgeistDataprovider"/>
   </Extension>
 
 </Addin>

-- 
banshee-community-extensions



More information about the Pkg-cli-apps-commits mailing list