diff --git a/Makefile.addins b/Makefile.addins
index bcf3727..d4492e1 100644
--- a/Makefile.addins
+++ b/Makefile.addins
@@ -22,7 +22,8 @@ build_references =					\
 	$(LINK_GPHOTO2)					\
 	$(LINK_GIOSHARP)				\
 	$(LINK_UNIQUESHARP)				\
-	$(LINK_GTKSHARPBEANS)
+	$(LINK_GTKSHARPBEANS)			\
+	$(LINK_HYENA)
 
 
 mpack: $(ASSEMBLY)
diff --git a/Makefile.include b/Makefile.include
index fecefb4..00b0c29 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -13,6 +13,7 @@ DIR_SRC = $(top_builddir)/src
 DIR_GIOSHARP = $(top_builddir)/lib/gio-sharp/gio
 DIR_GTKSHARPBEANS = $(top_builddir)/lib/gtk-sharp-beans
 DIR_UNIQUESHARP = $(top_builddir)/lib/unique-sharp/unique
+DIR_BIN = $(top_builddir)/bin
 
 ## Links
 
@@ -21,6 +22,10 @@ LINK_SEMWEB = -r:$(DIR_SEMWEB)/SemWeb.dll
 LINK_GIOSHARP = -r:$(DIR_GIOSHARP)/gio-sharp.dll
 LINK_GTKSHARPBEANS = -r:$(DIR_GTKSHARPBEANS)/gtk-sharp-beans.dll
 LINK_UNIQUESHARP = -r:$(DIR_UNIQUESHARP)/unique-sharp.dll
+LINK_HYENA = -r:$(DIR_BIN)/Hyena.dll
+LINK_HYENA_GUI = -r:$(DIR_BIN)/Hyena.Gui.dll
+LINK_HYENA_DATA_SQLITE = -r:$(DIR_BIN)/Hyena.Data.Sqlite.dll
+
 
 ## Build
 
diff --git a/extensions/Editors/BWEditor/BWEditor.cs b/extensions/Editors/BWEditor/BWEditor.cs
index bd4dcda..ffe76c4 100644
--- a/extensions/Editors/BWEditor/BWEditor.cs
+++ b/extensions/Editors/BWEditor/BWEditor.cs
@@ -16,6 +16,7 @@ using Gtk;
 using Gdk;
 using Mono.Unix;
 using Mono.Simd;
+using Hyena;
 
 namespace BWEditor {
 	class BWEditor : Editor {
@@ -33,9 +34,9 @@ namespace BWEditor {
 
 		protected override Pixbuf Process (Pixbuf input, Cms.Profile input_profile)
 		{
-			uint timer = FSpot.Utils.Log.DebugTimerStart ();
+			uint timer = Log.DebugTimerStart ();
 			if (input.BitsPerSample != 8) {
-				FSpot.Utils.Log.Warning ("unsupported pixbuf format");
+				Log.Warning ("unsupported pixbuf format");
 				return (Pixbuf)input.Clone ();
 			}
 			Pixbuf output = new Pixbuf (input.Colorspace, input.HasAlpha, input.BitsPerSample, input.Width, input.Height);
@@ -70,7 +71,7 @@ namespace BWEditor {
 							pix_out[i*rowstride_out + j*chan + 3] = pix_in[i*rowstride_in + j*chan + 3];
 					}
 			}
-			FSpot.Utils.Log.DebugTimerPrint (timer, "Processing took {0}");
+			Log.DebugTimerPrint (timer, "Processing took {0}");
 			return output;
 		}
 
diff --git a/extensions/Exporters/CDExport/CDExport.cs b/extensions/Exporters/CDExport/CDExport.cs
index 9484e62..a35c66f 100644
--- a/extensions/Exporters/CDExport/CDExport.cs
+++ b/extensions/Exporters/CDExport/CDExport.cs
@@ -20,7 +20,7 @@ using Mono.Unix;
 using FSpot;
 using FSpot.Filters;
 using FSpot.Widgets;
-using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 using GLib;
@@ -245,7 +245,7 @@ namespace FSpotCDExport {
 				}
 
 			} catch (System.Exception e) {
-				FSpot.Utils.Log.DebugException (e);
+				Hyena.Log.DebugException (e);
 				progress_dialog.Message = e.ToString ();
 				progress_dialog.ProgressText = Catalog.GetString ("Error Transferring");
 				return;
diff --git a/extensions/Exporters/FacebookExport/FacebookExport.cs b/extensions/Exporters/FacebookExport/FacebookExport.cs
index 66225b0..0f65bd8 100644
--- a/extensions/Exporters/FacebookExport/FacebookExport.cs
+++ b/extensions/Exporters/FacebookExport/FacebookExport.cs
@@ -28,7 +28,7 @@ using Gnome.Keyring;
 using GtkBeans;
 
 using FSpot;
-using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 using FSpot.Extensions;
 using FSpot.Filters;
@@ -349,7 +349,7 @@ namespace FSpot.Exporter.Facebook
 					IBrowsableItem item = items [i];
 
 					FileInfo file_info;
-					Log.Debug ("uploading {0}", i);
+					Log.DebugFormat ("uploading {0}", i);
 
 					progress_dialog.Message = String.Format (Catalog.GetString ("Uploading picture \"{0}\" ({1} of {2})"), item.Name, i + 1, items.Length);
 					progress_dialog.ProgressText = string.Empty;
diff --git a/extensions/Exporters/FacebookExport/FacebookExportDialog.cs b/extensions/Exporters/FacebookExport/FacebookExportDialog.cs
index 8bf08f2..04b5c07 100644
--- a/extensions/Exporters/FacebookExport/FacebookExportDialog.cs
+++ b/extensions/Exporters/FacebookExport/FacebookExportDialog.cs
@@ -22,7 +22,7 @@ using System.Threading;
 using Gtk;
 using GtkBeans;
 
-using FSpot.Utils;
+using Hyena;
 using FSpot.Platform;
 using FSpot.UI.Dialog;
 
@@ -349,10 +349,10 @@ namespace FSpot.Exporter.Facebook
 			bool actual = account.HasPermission (permission);
 			if (desired != actual) {
 				if (desired) {
-					Log.Debug ("Granting {0}", permission);
+					Log.DebugFormat ("Granting {0}", permission);
 					account.GrantPermission (permission, this);
 				} else {
-					Log.Debug ("Revoking {0}", permission);
+					Log.DebugFormat ("Revoking {0}", permission);
 					account.RevokePermission (permission);
 				}
 				/* Double-check that things work... */
diff --git a/extensions/Exporters/FacebookExport/Makefile.am b/extensions/Exporters/FacebookExport/Makefile.am
index 3d4afcf..3945b71 100644
--- a/extensions/Exporters/FacebookExport/Makefile.am
+++ b/extensions/Exporters/FacebookExport/Makefile.am
@@ -44,7 +44,8 @@ REFS =							\
 	$(LINK_GPHOTO2)					\
 	$(LINK_GIOSHARP)				\
 	$(LINK_UNIQUESHARP)				\
-	-r:Mono.Posix
+	-r:Mono.Posix					\
+	$(LINK_HYENA)
 
 PKGS =					\
 	-pkg:gtk-sharp-2.0
diff --git a/extensions/Exporters/FolderExport/FolderExport.cs b/extensions/Exporters/FolderExport/FolderExport.cs
index 08d8440..cb9c273 100644
--- a/extensions/Exporters/FolderExport/FolderExport.cs
+++ b/extensions/Exporters/FolderExport/FolderExport.cs
@@ -186,7 +186,7 @@ namespace FSpotFolderExport {
 				}
 
 				if (scale) {
-					Log.Debug ("Resize Photos to {0}.", size);
+					Log.DebugFormat ("Resize Photos to {0}.", size);
 					gallery.SetScale (size);
 				} else {
 					Log.Debug ("Exporting full size.");
@@ -249,7 +249,7 @@ namespace FSpotFolderExport {
 				// we've created the structure, now if the destination was local (native) we are done
 				// otherwise we xfer
 				if (!dest.IsNative) {
-					Log.Debug ("Transferring \"{0}\" to \"{1}\"", source.Path, target.Path);
+					Log.DebugFormat ("Transferring \"{0}\" to \"{1}\"", source.Path, target.Path);
 					progress_dialog.Message = String.Format (Catalog.GetString ("Transferring to \"{0}\""), target.Path);
 					progress_dialog.ProgressText = Catalog.GetString ("Transferring...");
 					result = source.CopyRecursive (target, GLib.FileCopyFlags.Overwrite, new GLib.Cancellable (), Progress);
@@ -262,7 +262,7 @@ namespace FSpotFolderExport {
 				progress_dialog.ButtonLabel = Gtk.Stock.Ok;
 
 				if (open) {
-					Log.Debug (String.Format ("Open URI \"{0}\"", target.Uri.ToString ()));
+					Log.DebugFormat (String.Format ("Open URI \"{0}\"", target.Uri.ToString ()));
 					Gtk.Application.Invoke (delegate {GtkBeans.Global.ShowUri (Dialog.Screen, target.Uri.ToString () );});
 				}
 
@@ -516,7 +516,7 @@ namespace FSpotFolderExport {
 			try {
 				Directory.CreateDirectory (path);
 			} catch {
-				Log.Error ("Error in creating directory \"{0}\"", path);
+				Log.ErrorFormat ("Error in creating directory \"{0}\"", path);
 			}
 			return path;
 		}
diff --git a/extensions/Exporters/FolderExport/Makefile.am b/extensions/Exporters/FolderExport/Makefile.am
index 3f5c274..0854f94 100644
--- a/extensions/Exporters/FolderExport/Makefile.am
+++ b/extensions/Exporters/FolderExport/Makefile.am
@@ -20,7 +20,8 @@ REFS =					\
 	$(LINK_UNIQUESHARP)		\
 	-r:System.Web			\
 	-r:ICSharpCode.SharpZipLib	\
-	-r:Mono.Posix
+	-r:Mono.Posix			\
+	$(LINK_HYENA)
 
 PKGS =					\
 	-pkg:gtk-sharp-2.0		\
diff --git a/extensions/Exporters/PicasaWebExport/Makefile.am b/extensions/Exporters/PicasaWebExport/Makefile.am
index b5bfd9f..9e7bc9c 100644
--- a/extensions/Exporters/PicasaWebExport/Makefile.am
+++ b/extensions/Exporters/PicasaWebExport/Makefile.am
@@ -20,7 +20,8 @@ REFS =						\
 	$(LINK_GPHOTO2)				\
 	$(LINK_UNIQUESHARP)			\
 	-r:System.Web				\
-	-r:Mono.Posix
+	-r:Mono.Posix				\
+	$(LINK_HYENA)
 
 PKGS =					\
 	$(LINK_GTKSHARPBEANS)		\
diff --git a/extensions/Exporters/PicasaWebExport/PicasaWebExport.cs b/extensions/Exporters/PicasaWebExport/PicasaWebExport.cs
index 71f57a9..3f73a87 100644
--- a/extensions/Exporters/PicasaWebExport/PicasaWebExport.cs
+++ b/extensions/Exporters/PicasaWebExport/PicasaWebExport.cs
@@ -432,7 +432,7 @@ namespace FSpotGoogleExport {
 				public_album = public_check.Active;
 
 				try {
-					picasa.CreateAlbum (System.Web.HttpUtility.HtmlEncode (title), description, public_album ? AlbumAccess.Public : AlbumAccess.Private);
+//					picasa.CreateAlbum (System.Web.HttpUtility.HtmlEncode (title), description, public_album ? AlbumAccess.Public : AlbumAccess.Private);
 				} catch (System.Exception e) {
 					HigMessageDialog md =
 					new HigMessageDialog (Dialog,
diff --git a/extensions/Exporters/SmugMugExport/Makefile.am b/extensions/Exporters/SmugMugExport/Makefile.am
index 166de02..0ba2aef 100644
--- a/extensions/Exporters/SmugMugExport/Makefile.am
+++ b/extensions/Exporters/SmugMugExport/Makefile.am
@@ -20,7 +20,8 @@ REFS =						\
 	$(LINK_GTKSHARPBEANS)			\
 	$(LINK_KEYRING)				\
 	$(LINK_UNIQUESHARP)			\
-	-r:Mono.Posix
+	-r:Mono.Posix				\
+	$(LINK_HYENA)
 
 PKGS =					\
 	-pkg:gtk-sharp-2.0		\
diff --git a/extensions/Exporters/SmugMugExport/SmugMugExport.cs b/extensions/Exporters/SmugMugExport/SmugMugExport.cs
index 791057d..19439b4 100644
--- a/extensions/Exporters/SmugMugExport/SmugMugExport.cs
+++ b/extensions/Exporters/SmugMugExport/SmugMugExport.cs
@@ -23,7 +23,7 @@ using Gtk;
 using FSpot;
 using FSpot.Filters;
 using FSpot.Widgets;
-using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 using Gnome.Keyring;
diff --git a/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am b/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
index a34caf7..16ab64f 100644
--- a/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
+++ b/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
@@ -9,7 +9,8 @@ ASSEMBLY_SOURCES =				\
 REFS = \
 	-r:$(top_builddir)/src/FSpot.Utils.dll	\
 	$(LINK_GIOSHARP)			\
-	-r:System.Web
+	-r:System.Web				\
+	$(LINK_HYENA)
 
 PKGS =
 
diff --git a/extensions/Exporters/SmugMugExport/SmugMugNet/SmugMugApi.cs b/extensions/Exporters/SmugMugExport/SmugMugNet/SmugMugApi.cs
index 196d487..67b64bc 100644
--- a/extensions/Exporters/SmugMugExport/SmugMugNet/SmugMugApi.cs
+++ b/extensions/Exporters/SmugMugExport/SmugMugNet/SmugMugApi.cs
@@ -18,6 +18,7 @@ using System.Text.RegularExpressions;
 using System.Xml;
 using System.Collections.Specialized;
 using FSpot.Utils;
+using Hyena;
 
 namespace SmugMugNet
 {
@@ -431,7 +432,7 @@ namespace SmugMugNet
 			public SmugMugParam (string name, object value)
 			{
 				this.name = name;
-				this.value = (value is String ? System.Web.HttpUtility.UrlEncode ((string)value) : value);
+//				this.value = (value is String ? System.Web.HttpUtility.UrlEncode ((string)value) : value);
 			}
 
 			public string Name
diff --git a/extensions/Exporters/TabbloExport/ApplicationCentricCertificatePolicy.cs b/extensions/Exporters/TabbloExport/ApplicationCentricCertificatePolicy.cs
index f5abfd7..ef100d7 100644
--- a/extensions/Exporters/TabbloExport/ApplicationCentricCertificatePolicy.cs
+++ b/extensions/Exporters/TabbloExport/ApplicationCentricCertificatePolicy.cs
@@ -37,7 +37,7 @@ using System.Runtime.Serialization;
 using System.Runtime.Serialization.Formatters.Binary;
 using System.Security.Cryptography.X509Certificates;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpotTabbloExport {
 
@@ -62,7 +62,7 @@ namespace FSpotTabbloExport {
 		                                   WebRequest request,
 						   int problem)
 		{
-			Log.Debug ("Checking validation result for {0}: "
+			Log.DebugFormat ("Checking validation result for {0}: "
 					+ "problem={1}",
 					request.RequestUri, problem);
 
diff --git a/extensions/Exporters/TabbloExport/BlindTrustCertificatePolicy.cs b/extensions/Exporters/TabbloExport/BlindTrustCertificatePolicy.cs
index cfe157e..3046d15 100644
--- a/extensions/Exporters/TabbloExport/BlindTrustCertificatePolicy.cs
+++ b/extensions/Exporters/TabbloExport/BlindTrustCertificatePolicy.cs
@@ -30,7 +30,7 @@
 using System.Net;
 using System.Security.Cryptography.X509Certificates;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpotTabbloExport {
 	class BlindTrustCertificatePolicy : ICertificatePolicy {
diff --git a/extensions/Exporters/TabbloExport/FSpotTraceListener.cs b/extensions/Exporters/TabbloExport/FSpotTraceListener.cs
index a094d3b..a7484c1 100644
--- a/extensions/Exporters/TabbloExport/FSpotTraceListener.cs
+++ b/extensions/Exporters/TabbloExport/FSpotTraceListener.cs
@@ -27,13 +27,15 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Hyena;
+
 namespace FSpotTabbloExport {
 
 	class FSpotTraceListener : System.Diagnostics.TraceListener {
 
 		public override void Write (string message)
 		{
-			FSpot.Utils.Log.Debug ("Mono.Tabblo", message);
+			Log.Debug ("Mono.Tabblo", message);
 		}
 
 		public override void WriteLine (string message)
diff --git a/extensions/Exporters/TabbloExport/Makefile.am b/extensions/Exporters/TabbloExport/Makefile.am
index 056be8d..757adaf 100644
--- a/extensions/Exporters/TabbloExport/Makefile.am
+++ b/extensions/Exporters/TabbloExport/Makefile.am
@@ -35,7 +35,8 @@ REFS = \
 	$(LINK_GTKSHARPBEANS)	\	
 	$(LINK_GPHOTO2)		\
 	$(LINK_UNIQUESHARP)	\
-	-r:Mono.Posix.dll
+	-r:Mono.Posix.dll				\
+	$(LINK_HYENA)
 
 PKGS = \
 	-pkg:gtk-sharp-2.0 
diff --git a/extensions/Exporters/TabbloExport/TabbloExport.cs b/extensions/Exporters/TabbloExport/TabbloExport.cs
index 8017c19..a6591a1 100644
--- a/extensions/Exporters/TabbloExport/TabbloExport.cs
+++ b/extensions/Exporters/TabbloExport/TabbloExport.cs
@@ -36,7 +36,7 @@ using System.Diagnostics;
 using System.Net;
 using System.Threading;
 
-using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 namespace FSpotTabbloExport {
diff --git a/extensions/Exporters/TabbloExport/TabbloExportModel.cs b/extensions/Exporters/TabbloExport/TabbloExportModel.cs
index aca8abf..bfc6728 100644
--- a/extensions/Exporters/TabbloExport/TabbloExportModel.cs
+++ b/extensions/Exporters/TabbloExport/TabbloExportModel.cs
@@ -27,7 +27,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using FSpot.Utils;
+using Hyena;
 
 using Mono.Tabblo;
 
@@ -270,13 +270,13 @@ namespace FSpotTabbloExport {
 						Gnome.Keyring.Ring.Find (
 								type, attrs);
 				if (1 < items.Length) {
-					Log.Warning ("More than one {0} "
+					Log.WarningFormat ("More than one {0} "
 							+ " found in keyring",
 							KeyringItemName);
 				}
 			
 				if (1 <= items.Length) {
-					Log.Debug ("{0} data found in "
+					Log.DebugFormat ("{0} data found in "
 							+ "keyring",
 							KeyringItemName);
 					attrs =	items [0].Attributes;
diff --git a/extensions/Exporters/TabbloExport/UserDecisionCertificatePolicy.cs b/extensions/Exporters/TabbloExport/UserDecisionCertificatePolicy.cs
index fb5bce9..e5ea72a 100644
--- a/extensions/Exporters/TabbloExport/UserDecisionCertificatePolicy.cs
+++ b/extensions/Exporters/TabbloExport/UserDecisionCertificatePolicy.cs
@@ -34,7 +34,7 @@ using System.Reflection;
 using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpotTabbloExport {
 
diff --git a/extensions/Exporters/ZipExport/Makefile.am b/extensions/Exporters/ZipExport/Makefile.am
index 52b0378..c837ef0 100644
--- a/extensions/Exporters/ZipExport/Makefile.am
+++ b/extensions/Exporters/ZipExport/Makefile.am
@@ -20,7 +20,8 @@ REFS =						\
 	$(LINK_UNIQUESHARP)			\
 	-r:System.Web				\
 	-r:ICSharpCode.SharpZipLib		\
-	-r:Mono.Posix
+	-r:Mono.Posix				\
+	$(LINK_HYENA)
 
 PKGS =					\
 	-pkg:gtk-sharp-2.0		\
diff --git a/extensions/Exporters/ZipExport/ZipExport.cs b/extensions/Exporters/ZipExport/ZipExport.cs
index ce386ca..6c73aae 100644
--- a/extensions/Exporters/ZipExport/ZipExport.cs
+++ b/extensions/Exporters/ZipExport/ZipExport.cs
@@ -16,7 +16,7 @@ using FSpot;
 using FSpot.UI.Dialog;
 using FSpot.Extensions;
 using FSpot.Filters;
-using FSpot.Utils;
+using Hyena;
 using System;
 using System.IO;
 using System.Collections;
@@ -94,10 +94,10 @@ namespace ZipExport {
 			System.Uri dest = new System.Uri (uri_chooser.Uri);
 			Crc32 crc = new Crc32 ();
 			string filedest = dest.LocalPath + "/" + filename.Text;
-			Log.Debug ("Creating zip file {0}", filedest);
+			Log.DebugFormat ("Creating zip file {0}", filedest);
 			ZipOutputStream s = new ZipOutputStream (File.Create(filedest));
 			if (scale_check.Active)
-				Log.Debug ("Scaling to {0}", scale_size.ValueAsInt);
+				Log.DebugFormat ("Scaling to {0}", scale_size.ValueAsInt);
 
 			ProgressDialog progress_dialog = new ProgressDialog (Catalog.GetString ("Exporting files"),
 							      ProgressDialog.CancelButtonType.Stop,
diff --git a/extensions/Services/DBusService/DBusService.cs b/extensions/Services/DBusService/DBusService.cs
index b7374db..14fbda8 100644
--- a/extensions/Services/DBusService/DBusService.cs
+++ b/extensions/Services/DBusService/DBusService.cs
@@ -11,7 +11,7 @@
 using System;
 using FSpot;
 using FSpot.Extensions;
-using FSpot.Utils;
+using Hyena;
 
 namespace DBusService {
 	public class DBusService : IService
diff --git a/extensions/Tools/LiveWebGallery/PhotoRequestHandler.cs b/extensions/Tools/LiveWebGallery/PhotoRequestHandler.cs
index 991e932..8fae02c 100644
--- a/extensions/Tools/LiveWebGallery/PhotoRequestHandler.cs
+++ b/extensions/Tools/LiveWebGallery/PhotoRequestHandler.cs
@@ -13,7 +13,7 @@ using System.Text;
 
 using FSpot;
 using FSpot.Filters;
-using FSpot.Utils;
+using Hyena;
 
 namespace LiveWebGalleryExtension
 {	
@@ -61,7 +61,7 @@ namespace LiveWebGalleryExtension
 		protected void SendFile (FileInfo file, Photo photo, Stream dest)
 		{
 			stats.BytesSent += (int)file.Length;			
-			Log.Debug ("Sending {0}, {1} kb", file.FullName, file.Length / 1024);
+			Log.DebugFormat ("Sending {0}, {1} kb", file.FullName, file.Length / 1024);
 			SendHeadersAndStartContent(dest, "Content-Type: " + MimeTypeForExt (file.Extension),
 											 "Content-Length: " + file.Length,
 								 "Last-Modified: " + photo.Time.ToString ("r"));
diff --git a/extensions/Tools/LiveWebGallery/SimpleWebServer.cs b/extensions/Tools/LiveWebGallery/SimpleWebServer.cs
index 9a07637..2cec0bd 100644
--- a/extensions/Tools/LiveWebGallery/SimpleWebServer.cs
+++ b/extensions/Tools/LiveWebGallery/SimpleWebServer.cs
@@ -18,7 +18,7 @@ using System.Threading;
 
 using FSpot;
 using FSpot.Extensions;
-using FSpot.Utils;
+using Hyena;
 
 namespace LiveWebGalleryExtension
 {		
diff --git a/extensions/Tools/MergeDb/MergeDb.cs b/extensions/Tools/MergeDb/MergeDb.cs
index afc09bb..0b76fe8 100644
--- a/extensions/Tools/MergeDb/MergeDb.cs
+++ b/extensions/Tools/MergeDb/MergeDb.cs
@@ -15,7 +15,6 @@ using Gtk;
 
 using FSpot;
 using FSpot.Extensions;
-using FSpot.Utils;
 using FSpot.Query;
 using FSpot.UI.Dialog;
 using Mono.Unix;
@@ -110,7 +109,7 @@ namespace MergeDbExtension
 
 		public static void Merge (string path, Db to_db)
 		{
-			Log.Warning ("Will merge db {0} into main f-spot db {1}", path, FSpot.Global.BaseDirectory + "/photos.db" );
+			Log.WarningFormat ("Will merge db {0} into main f-spot db {1}", path, FSpot.Global.BaseDirectory + "/photos.db" );
 			Db from_db = new Db ();
 			from_db.Init (path, true);
 			//MergeDb mdb = new MergeDb (from_db, to_db);
@@ -188,7 +187,7 @@ namespace MergeDbExtension
 
 		void ImportPhoto (Photo photo, bool copy)
 		{
-			Log.Warning ("Importing {0}", photo.Name);
+			Log.WarningFormat ("Importing {0}", photo.Name);
 			PhotoStore from_store = from_db.Photos;
 			PhotoStore to_store = to_db.Photos;
 
@@ -199,7 +198,7 @@ namespace MergeDbExtension
 				foreach (string key in PathMap.Keys) {
 					string path = photo_path;
 					path = path.Replace (key, PathMap [key]);
-					Log.Debug ("Replaced path {0}", path);
+					Log.DebugFormat ("Replaced path {0}", path);
 					if (System.IO.File.Exists (path)) {
 						photo_path = path;
 						break;;
@@ -219,7 +218,7 @@ namespace MergeDbExtension
 					pfd.Dialog.Destroy ();
 					if (new_folder == null) //Skip
 						return;
-					Log.Debug ("{0} maps to {1}", folder, new_folder);
+					Log.DebugFormat ("{0} maps to {1}", folder, new_folder);
 
 					PathMap[folder] = new_folder;
 
@@ -259,7 +258,7 @@ namespace MergeDbExtension
 				return;
 
 			foreach (Tag t in photo.Tags) {
-				Log.Warning ("Tagging with {0}", t.Name);
+				Log.WarningFormat ("Tagging with {0}", t.Name);
 				newp.AddTag (tag_map [t.Id]);
 			}
 
diff --git a/extensions/Tools/MetaPixel/MetaPixel.cs b/extensions/Tools/MetaPixel/MetaPixel.cs
index c2c5dc2..ce988e3 100644
--- a/extensions/Tools/MetaPixel/MetaPixel.cs
+++ b/extensions/Tools/MetaPixel/MetaPixel.cs
@@ -24,7 +24,7 @@ using FSpot.Extensions;
 using FSpot.Widgets;
 using FSpot.Filters;
 using FSpot.UI.Dialog;
-using FSpot.Utils;
+using Hyena;
 using Mono.Unix;
 
 namespace MetaPixelExtension {
@@ -144,7 +144,7 @@ namespace MetaPixelExtension {
 				}
 				//FIXME should switch to retry/skip
 				if (!GLib.FileFactory.NewForUri (p.DefaultVersion.Uri).Exists) {
-					Log.Warning (String.Format ("Couldn't access photo {0} while creating miniatures", p.DefaultVersion.Uri.LocalPath));
+					Log.WarningFormat (String.Format ("Couldn't access photo {0} while creating miniatures", p.DefaultVersion.Uri.LocalPath));
 					continue;
 				}
 				//FIXME Check if the picture's format is supproted (jpg, gif)
@@ -168,7 +168,7 @@ namespace MetaPixelExtension {
 				System.Diagnostics.Process mp_prep = System.Diagnostics.Process.Start ("metapixel", prepare_command);
 				mp_prep.WaitForExit ();
 				if (!System.IO.File.Exists (minifile)) {
-					Log.Debug ("No mini? No party! {0}", minifile);
+					Log.DebugFormat ("No mini? No party! {0}", minifile);
 					continue;
 				}
 
@@ -191,7 +191,7 @@ namespace MetaPixelExtension {
 				}
 				//FIXME should switch to retry/skip
 				if (!GLib.FileFactory.NewForUri (p.DefaultVersion.Uri).Exists) {
-					Log.Warning (String.Format ("Couldn't access photo {0} while creating mosaics", p.DefaultVersion.Uri.LocalPath));
+					Log.WarningFormat (String.Format ("Couldn't access photo {0} while creating mosaics", p.DefaultVersion.Uri.LocalPath));
 					error_count ++;
 					continue;
 				}
diff --git a/extensions/Tools/PictureTile/PictureTile.cs b/extensions/Tools/PictureTile/PictureTile.cs
index 1e085c6..6b16db8 100644
--- a/extensions/Tools/PictureTile/PictureTile.cs
+++ b/extensions/Tools/PictureTile/PictureTile.cs
@@ -22,7 +22,7 @@ using FSpot.Extensions;
 using FSpot.Widgets;
 using FSpot.Filters;
 using FSpot.UI.Dialog;
-using FSpot.Utils;
+using Hyena;
 using Mono.Unix;
 
 namespace PictureTileExtension {
@@ -131,7 +131,7 @@ namespace PictureTileExtension {
 
 				//FIXME should switch to retry/skip
 				if (!GLib.FileFactory.NewForUri (p.DefaultVersion.Uri).Exists) {
-					Log.Warning (String.Format ("Couldn't access photo {0} while creating mosaics", p.DefaultVersion.Uri.LocalPath));
+					Log.WarningFormat ("Couldn't access photo {0} while creating mosaics", p.DefaultVersion.Uri.LocalPath);
 					continue;
 				}
 
diff --git a/src/Core/App.cs b/src/Core/App.cs
index b53c7d5..70757e9 100644
--- a/src/Core/App.cs
+++ b/src/Core/App.cs
@@ -19,7 +19,6 @@ using Unique;
 using Mono.Unix;
 
 using Hyena;
-using FSpot.Utils;
 
 namespace FSpot
 {
diff --git a/src/Core/Photo.cs b/src/Core/Photo.cs
index 3fa423d..c82e65c 100644
--- a/src/Core/Photo.cs
+++ b/src/Core/Photo.cs
@@ -546,7 +546,8 @@ namespace FSpot
 					return md5_string;
 				}
 			} catch (Exception e) {
-			 	Log.DebugException (String.Format ("Failed to create MD5Sum for Uri: {0}\n", uri), e);
+			// FIXME: changed form DebugException to Exception.
+			 	Log.Exception (String.Format ("Failed to create MD5Sum for Uri: {0}\n", uri), e);
 			}
 
 			return string.Empty; 
diff --git a/src/Core/Tag.cs b/src/Core/Tag.cs
index c9be25d..7a64a6f 100644
--- a/src/Core/Tag.cs
+++ b/src/Core/Tag.cs
@@ -11,6 +11,7 @@
 using System;
 using Gdk;
 using FSpot.Utils;
+using Hyena;
 
 namespace FSpot
 {
@@ -176,7 +177,7 @@ namespace FSpot
 
 		~Tag ()
 		{
-			Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());		
+			Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
 			if (icon != null)
 				icon.Dispose ();
 			if (cached_icon != null)
diff --git a/src/Db.cs b/src/Db.cs
index 0e60988..974df55 100644
--- a/src/Db.cs
+++ b/src/Db.cs
@@ -6,7 +6,7 @@ using System;
 using Banshee.Database;
 using System.Diagnostics;
 using FSpot;
-using FSpot.Utils;
+using Hyena;
 
 // A Store maps to a SQL table.  We have separate stores (i.e. SQL tables) for tags, photos and imports.
 
@@ -274,7 +274,7 @@ public class Db : IDisposable {
 
 	~Db ()
 	{
-		Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());
+		Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
 		Dispose (false);
 	}
 
diff --git a/src/Editors/CropEditor.cs b/src/Editors/CropEditor.cs
index 6d4c265..375e8cc 100644
--- a/src/Editors/CropEditor.cs
+++ b/src/Editors/CropEditor.cs
@@ -10,6 +10,7 @@
 using FSpot;
 using FSpot.UI.Dialog;
 using FSpot.Utils;
+using Hyena;
 using Gdk;
 using Gtk;
 using Mono.Unix;
@@ -143,7 +144,7 @@ namespace FSpot.Editors {
 						Pixbuf pb = State.PhotoImageView.CompletePixbuf ();
 						State.PhotoImageView.SelectionXyRatio = (double)pb.Width / (double)pb.Height;
 					} catch (System.Exception ex) {
-						Log.Warning ("Exception in selection ratio's: {0}", ex);
+						Log.WarningFormat ("Exception in selection ratio's: {0}", ex);
 						State.PhotoImageView.SelectionXyRatio = 0;
 					}
 					break;
diff --git a/src/Editors/Editor.cs b/src/Editors/Editor.cs
index e751fae..b83f86c 100644
--- a/src/Editors/Editor.cs
+++ b/src/Editors/Editor.cs
@@ -8,7 +8,7 @@
  */
 
 using FSpot;
-using FSpot.Utils;
+using Hyena;
 using FSpot.Widgets;
 
 using Gdk;
@@ -84,7 +84,7 @@ namespace FSpot.Editors {
 		// A tool can be applied if it doesn't need a selection, or if it has one.
 		public bool CanBeApplied {
 			get {
-				Log.Debug ("{0} can be applied? {1}", this, !NeedsSelection || (NeedsSelection && State.HasSelection));
+				Log.DebugFormat ("{0} can be applied? {1}", this, !NeedsSelection || (NeedsSelection && State.HasSelection));
 				return !NeedsSelection || (NeedsSelection && State.HasSelection);
 			}
 		}
diff --git a/src/FullScreenView.cs b/src/FullScreenView.cs
index 4768e3d..d2362ba 100644
--- a/src/FullScreenView.cs
+++ b/src/FullScreenView.cs
@@ -12,6 +12,7 @@ using Gtk;
 using Gdk;
 using FSpot.Widgets;
 using FSpot.Utils;
+using Hyena;
 using Mono.Unix;
 
 namespace FSpot {
diff --git a/src/ImageLoaderThread.cs b/src/ImageLoaderThread.cs
index 121fc74..25b1fad 100644
--- a/src/ImageLoaderThread.cs
+++ b/src/ImageLoaderThread.cs
@@ -15,7 +15,7 @@ using System.Threading;
 using System;
 
 using Hyena;
-using FSpot.Utils;
+
 
 public class ImageLoaderThread {
 
@@ -183,7 +183,7 @@ public class ImageLoaderThread {
 		if (requests_by_uri.TryGetValue (uri, out existing_request)) {
 			/* FIXME: At least for now, this shouldn't happen.  */
 			if (existing_request.order != order)
-				Log.Warning ("BUG: Filing another request of order {0} (previously {1}) for `{2}'",
+				Log.WarningFormat ("BUG: Filing another request of order {0} (previously {1}) for `{2}'",
 						   order, existing_request.order, uri);
 
 			queue.Remove (existing_request);
diff --git a/src/Imaging/ImageFile.cs b/src/Imaging/ImageFile.cs
index f30d5e3..996dd77 100644
--- a/src/Imaging/ImageFile.cs
+++ b/src/Imaging/ImageFile.cs
@@ -36,7 +36,7 @@ namespace FSpot {
 		
 		protected Stream Open ()
 		{
-			Log.Debug ("open uri = {0}", uri.ToString ());
+			Log.DebugFormat ("open uri = {0}", uri.ToString ());
 //			if (uri.IsFile)
 //				return new FileStream (uri.LocalPath, FileMode.Open);
 			return new GLib.GioStream (GLib.FileFactory.NewForUri (uri).Read (null));
diff --git a/src/Imaging/XmpFile.cs b/src/Imaging/XmpFile.cs
index e34049a..7a23c6c 100644
--- a/src/Imaging/XmpFile.cs
+++ b/src/Imaging/XmpFile.cs
@@ -2,7 +2,7 @@ using System.Xml;
 using System.Collections;
 using SemWeb;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Xmp {
 	public class XmpFile : SemWeb.StatementSource, SemWeb.StatementSink
@@ -37,7 +37,7 @@ namespace FSpot.Xmp {
 				store.Import (reader);
 				//Dump ();
 			} catch (System.Exception e) {
-				Log.Debug ("Caught an exception :{0}", e.ToString ());
+				Log.DebugFormat ("Caught an exception :{0}", e.ToString ());
 			}
 		}
 
diff --git a/src/JobScheduler/Scheduler.cs b/src/JobScheduler/Scheduler.cs
index 0fabc24..e029ee2 100644
--- a/src/JobScheduler/Scheduler.cs
+++ b/src/JobScheduler/Scheduler.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Threading;
 using System.Collections.Generic;
+using Hyena;
 
 namespace Banshee.Kernel
 {
@@ -213,7 +214,7 @@ namespace Banshee.Kernel
                     
                 lock(this_mutex) {
                     if(disposed) {
-                        FSpot.Utils.Log.Debug ("execution thread destroyed, dispose requested");
+                        Log.Debug ("execution thread destroyed, dispose requested");
                         return;
                     }
                 
diff --git a/src/Jobs/CalculateHashJob.cs b/src/Jobs/CalculateHashJob.cs
index 4c93505..ab1e4f8 100644
--- a/src/Jobs/CalculateHashJob.cs
+++ b/src/Jobs/CalculateHashJob.cs
@@ -10,6 +10,7 @@
 using System;
 using Banshee.Kernel;
 using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Jobs {
 	public class CalculateHashJob : Job
@@ -35,14 +36,14 @@ namespace FSpot.Jobs {
 			System.Threading.Thread.Sleep (200);
 
 			uint photo_id = Convert.ToUInt32 (JobOptions);
-			Log.Debug ("Calculating Hash {0}...", photo_id);
+			Log.DebugFormat ("Calculating Hash {0}...", photo_id);
 
 			try {
 				Photo photo = FSpot.App.Instance.Database.Photos.Get (Convert.ToUInt32 (photo_id)) as Photo;
 				FSpot.App.Instance.Database.Photos.UpdateMD5Sum (photo);
 				return true;
 			} catch (System.Exception e) {
-			 	Log.Debug ("Error Calculating Hash for photo {0}: {1}", JobOptions, e.Message);
+			 	Log.DebugFormat ("Error Calculating Hash for photo {0}: {1}", JobOptions, e.Message);
 			}
 			return false;
 		}
diff --git a/src/MainWindow.cs b/src/MainWindow.cs
index bca7a18..98f22a8 100644
--- a/src/MainWindow.cs
+++ b/src/MainWindow.cs
@@ -225,7 +225,7 @@ namespace FSpot
 					service.Initialize ();
 					service.Start ();
 				} catch (Exception e) {
-					Log.Warning ("Something went wrong while starting the {0} extension.", service.Id);
+					Log.WarningFormat ("Something went wrong while starting the {0} extension.", service.Id);
 					Log.DebugException (e);
 				}
 			}
@@ -254,7 +254,7 @@ namespace FSpot
 				else if (max_size == 0)
 					Log.Warning ("maximum_size is 0 (tin-hat mode), not overriding");
 				else if (max_size < size) {
-					Log.Debug ("Setting maximum_size to a saner value ({0}MB), according to your db size", size);
+					Log.DebugFormat ("Setting maximum_size to a saner value ({0}MB), according to your db size", size);
 					Preferences.Set (Preferences.GSD_THUMBS_MAX_SIZE, size);
 				}
 			}
@@ -2112,6 +2112,7 @@ namespace FSpot
 				Database.Photos.Remove (photos);
 				
 				UpdateQuery ();
+				// FIXME: Does this work?
 				Log.DebugTimerPrint (timer, "HandleDeleteCommand took {0}");
 			}
 		}
@@ -2824,7 +2825,7 @@ namespace FSpot
 			try {
 				application.LaunchUris (uri_list, null);
 			} catch (System.Exception) {
-				Log.Error ("Failed to lauch {0}", application.Name);
+				Log.ErrorFormat ("Failed to lauch {0}", application.Name);
 			}
 		}
 	
diff --git a/src/Makefile.am b/src/Makefile.am
index bf8678c..fb7649e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -62,7 +62,6 @@ UTILS_CSDISTFILES =				\
 	$(srcdir)/Utils/FileExtensions.cs	\
 	$(srcdir)/Utils/GdkUtils.cs		\
 	$(srcdir)/Utils/GtkUtil.cs		\
-	$(srcdir)/Utils/Log.cs			\
 	$(srcdir)/Utils/PixbufOrientation.cs	\
 	$(srcdir)/Utils/PixbufUtils.cs		\
 	$(srcdir)/Utils/RecursiveFileEnumerator.cs		\
@@ -333,12 +332,14 @@ CORE_ASSEMBLIES =				\
 	-pkg:gtk-sharp-2.0			\
 	-r:Cms.dll				\
 	-r:Mono.Posix				\
-	-r:FSpot.Utils.dll
+	-r:FSpot.Utils.dll			\
+	$(LINK_HYENA)
 
 QUERY_ASSEMBLIES =				\
 	$(LINK_GIOSHARP)			\
 	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll
+	-r:FSpot.Utils.dll			\
+	$(LINK_HYENA)
 
 UTILS_ASSEMBLIES =				\
 	-pkg:gtk-sharp-2.0			\
@@ -346,11 +347,14 @@ UTILS_ASSEMBLIES =				\
 	-r:Mono.Posix				\
 	-r:Mono.Cairo				\
 	$(LINK_GIOSHARP)			\
-	$(GCONF_PKG)
+	$(GCONF_PKG)				\
+	$(LINK_HYENA)
+
 
 JOBSCHEDULER_ASSEMBLIES =			\
 	$(LINK_GIOSHARP)			\
-	-r:FSpot.Utils.dll
+	-r:FSpot.Utils.dll				\
+	$(LINK_HYENA)
 
 BLING_ASSEMBLIES =				\
 	-pkg:gtk-sharp-2.0			\
@@ -378,7 +382,8 @@ GNOME_PLATFORM_ASSEMBLIES =			\
 	$(NDESK_DBUS_LIBS)				\
 	-r:Mono.Posix				\
 	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll
+	-r:FSpot.Utils.dll				\
+	$(LINK_HYENA)
 
 NULL_PLATFORM_ASSEMBLIES =			\
 	-r:FSpot.Core.dll			\
@@ -416,7 +421,8 @@ F_SPOT_ASSEMBLIES = 				\
 	-pkg:mono-addins-setup			\
 	-pkg:mono-addins-gui			\
 	-pkg:glade-sharp-2.0			\
-	-pkg:gnome-sharp-2.0
+	-pkg:gnome-sharp-2.0			\
+	$(LINK_HYENA)
 
 F_SPOT_DISTRESOURCES =					\
 	$(srcdir)/dces.rdf				\
diff --git a/src/PhotoLoader.cs b/src/PhotoLoader.cs
index 4636b05..84c0f4f 100644
--- a/src/PhotoLoader.cs
+++ b/src/PhotoLoader.cs
@@ -1,7 +1,6 @@
 using System;
 
 using FSpot.Platform;
-using FSpot.Utils;
 using Hyena;
 
 namespace FSpot {
@@ -46,7 +45,7 @@ namespace FSpot {
 		{			
 			using (Gdk.Pixbuf thumbnail = ThumbnailCache.Default.GetThumbnailForUri (uri)) {
 				if (pixbuf != null && thumbnail != null && !ThumbnailFactory.ThumbnailIsValid (thumbnail, uri)) {
-					Log.Debug ("regenerating thumbnail for {0}", uri);
+					Log.DebugFormat ("regenerating thumbnail for {0}", uri);
 					FSpot.ThumbnailGenerator.Default.Request (uri, 0, 256, 256);
 				}
 			}
diff --git a/src/PhotoQuery.cs b/src/PhotoQuery.cs
index c2384ff..6009db7 100644
--- a/src/PhotoQuery.cs
+++ b/src/PhotoQuery.cs
@@ -12,7 +12,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using FSpot.Query;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot {
 	public class PhotoQuery : FSpot.IBrowsableCollection {
diff --git a/src/PhotoVersionCommands.cs b/src/PhotoVersionCommands.cs
index 86de2b2..b52ccbc 100644
--- a/src/PhotoVersionCommands.cs
+++ b/src/PhotoVersionCommands.cs
@@ -3,7 +3,7 @@ using Glade;
 using System;
 using Mono.Unix;
 using FSpot;
-using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 public class PhotoVersionCommands
diff --git a/src/PhotoView.cs b/src/PhotoView.cs
index ab84f01..94a558f 100644
--- a/src/PhotoView.cs
+++ b/src/PhotoView.cs
@@ -21,6 +21,7 @@ using Mono.Unix;
 using FSpot.Xmp;
 using FSpot.Widgets;
 using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 namespace FSpot {
@@ -376,7 +377,7 @@ namespace FSpot {
 
 		~PhotoView ()
 		{
-			FSpot.Utils.Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());		
+			Hyena.Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
 			Dispose (false);	
 		}
 
diff --git a/src/Platform/Gnome/ScreenSaver.cs b/src/Platform/Gnome/ScreenSaver.cs
index 55fd35c..53eb33f 100644
--- a/src/Platform/Gnome/ScreenSaver.cs
+++ b/src/Platform/Gnome/ScreenSaver.cs
@@ -13,7 +13,7 @@ using System.Runtime.InteropServices;
 
 using NDesk.DBus;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Platform
 {
@@ -43,7 +43,7 @@ namespace FSpot.Platform
 			if (inhibited)
 				return cookie;
 
-			Log.Information ("Inhibit screensaver for {0}", reason);
+			Log.InformationFormat ("Inhibit screensaver for {0}", reason);
 			try {
 				cookie = GnomeScreenSaver.Inhibit ("f-spot", reason);
 				inhibited = true;
diff --git a/src/Platform/Gnome/WebProxy.cs b/src/Platform/Gnome/WebProxy.cs
index d54b64a..373f7d7 100644
--- a/src/Platform/Gnome/WebProxy.cs
+++ b/src/Platform/Gnome/WebProxy.cs
@@ -9,7 +9,7 @@
  */
 
 using System;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Platform
 {
diff --git a/src/PrintOperation.cs b/src/PrintOperation.cs
index 4be9d4a..a917db8 100644
--- a/src/PrintOperation.cs
+++ b/src/PrintOperation.cs
@@ -13,7 +13,7 @@ using System.Runtime.InteropServices;
 using Mono.Unix;
 
 using FSpot.Widgets;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot
 {
diff --git a/src/Query/LogicalTerm.cs b/src/Query/LogicalTerm.cs
index f9d0b23..a3967d5 100644
--- a/src/Query/LogicalTerm.cs
+++ b/src/Query/LogicalTerm.cs
@@ -9,7 +9,7 @@
 
 using System;
 using System.Collections.Generic;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Query
 {
@@ -62,7 +62,7 @@ namespace FSpot.Query
 
 		~TagTerm ()
 		{
-			Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());
+			Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
 			if (tag != null)
 				tag.Dispose ();
 		}
diff --git a/src/Query/OrderByTime.cs b/src/Query/OrderByTime.cs
index f8eb2f6..14cf4c2 100644
--- a/src/Query/OrderByTime.cs
+++ b/src/Query/OrderByTime.cs
@@ -9,7 +9,6 @@
  */
 
 using System;
-using FSpot.Utils;
 
 namespace FSpot.Query {
 	public class OrderByTime : IQueryCondition, IOrderCondition
diff --git a/src/QueuedSqliteDatabase.cs b/src/QueuedSqliteDatabase.cs
index a91d155..3a1e32f 100644
--- a/src/QueuedSqliteDatabase.cs
+++ b/src/QueuedSqliteDatabase.cs
@@ -32,7 +32,7 @@ using System.Threading;
 using System.Collections.Generic;
 using Mono.Data.SqliteClient;
 
-using FSpot.Utils;
+using Hyena;
 
 namespace Banshee.Database
 {
@@ -110,7 +110,7 @@ namespace Banshee.Database
 
         ~QueuedSqliteDatabase ()
         {
-            Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());
+            Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
             Dispose (false);
         }
         
@@ -391,7 +391,7 @@ namespace Banshee.Database
                 Thread.Sleep(SLEEP_TIME);
                 Execute();
             } catch(Exception e) {
-                Log.Debug ("Broken query: {0}", command.CommandText);
+                Log.DebugFormat ("Broken query: {0}", command.CommandText);
                 execution_exception = e;
                 if (command_type == Banshee.Database.CommandType.ExecuteNonQuery) {
                     throw execution_exception;
diff --git a/src/SendEmail.cs b/src/SendEmail.cs
index 7465d36..a561fa4 100644
--- a/src/SendEmail.cs
+++ b/src/SendEmail.cs
@@ -14,7 +14,6 @@ using System;
 
 using FSpot.Widgets;
 using FSpot.Filters;
-using FSpot.Utils;
 using FSpot.UI.Dialog;
 
 using Hyena;
@@ -327,7 +326,7 @@ namespace FSpot {
 					GtkBeans.Global.ShowUri (Dialog.Screen, "mailto:?subject=" + mail_subject + mail_attach);
 					break;
 				default: 
-					GtkBeans.Global.ShowUri (Dialog.Screen, "mailto:?subject=" + System.Web.HttpUtility.UrlEncode(mail_subject) + mail_attach);
+//					GtkBeans.Global.ShowUri (Dialog.Screen, "mailto:?subject=" + System.Web.HttpUtility.UrlEncode(mail_subject) + mail_attach);
 					break;
 				}
 			}
diff --git a/src/TagStore.cs b/src/TagStore.cs
index 3adb4c1..7800697 100644
--- a/src/TagStore.cs
+++ b/src/TagStore.cs
@@ -11,6 +11,7 @@ using FSpot;
 using FSpot.Jobs;
 using FSpot.Query;
 using FSpot.Utils;
+using Hyena;
 
 public class InvalidTagOperationException : InvalidOperationException {
 	public Tag tag;
diff --git a/src/Term.cs b/src/Term.cs
index c015ee4..2a1ddde 100644
--- a/src/Term.cs
+++ b/src/Term.cs
@@ -498,7 +498,7 @@ namespace FSpot {
 				handle_box = new LiteralBox ();
 				handle_box.BorderWidth = 1;
 
-				label = new Label (System.Web.HttpUtility.HtmlEncode (tag.Name));
+//				label = new Label (System.Web.HttpUtility.HtmlEncode (tag.Name));
 				label.UseMarkup = true;
 
 				image = new Gtk.Image (NormalIcon);
@@ -590,11 +590,11 @@ namespace FSpot {
 			negated_icon = null;
 			if (IsNegated) {
 				tips.SetTip (widget, String.Format (Catalog.GetString ("Not {0}"), tag.Name), null);
-				label.Text = "<s>" + System.Web.HttpUtility.HtmlEncode (tag.Name) + "</s>";
+//				label.Text = "<s>" + System.Web.HttpUtility.HtmlEncode (tag.Name) + "</s>";
 				image.Pixbuf = NegatedIcon;
 			} else {
 				tips.SetTip (widget, tag.Name, null);
-				label.Text = System.Web.HttpUtility.HtmlEncode (tag.Name);
+//				label.Text = System.Web.HttpUtility.HtmlEncode (tag.Name);
 				image.Pixbuf = NormalIcon;
 			}
 
diff --git a/src/ThumbnailCache.cs b/src/ThumbnailCache.cs
index ce46c87..6ebdb35 100644
--- a/src/ThumbnailCache.cs
+++ b/src/ThumbnailCache.cs
@@ -14,7 +14,6 @@ using System.Collections;
 using Gdk;
 
 using Hyena;
-using FSpot.Utils;
 
 namespace FSpot
 {
@@ -110,7 +109,7 @@ public class ThumbnailCache : IDisposable {
 
 	~ThumbnailCache ()
 	{
-		Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());		
+		Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());		
 		foreach (object item in pixbuf_mru) {
 			Thumbnail thumb = item as Thumbnail;
 			pixbuf_hash.Remove (thumb.uri);
diff --git a/src/TimeAdaptor.cs b/src/TimeAdaptor.cs
index 3dcb3f5..2b80a83 100644
--- a/src/TimeAdaptor.cs
+++ b/src/TimeAdaptor.cs
@@ -12,7 +12,7 @@ using System;
 using System.Threading;
 using System.Collections.Generic;
 using FSpot.Query;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot {
 	public class TimeAdaptor : GroupAdaptor, FSpot.ILimitable {
@@ -124,7 +124,7 @@ namespace FSpot {
 			int max_year = endyear;
 
 			if (year < min_year || year > max_year) {
-				Log.Debug ("TimeAdaptor.IndexFromDate year out of range[{1},{2}]: {0}", year, min_year, max_year);
+				Log.DebugFormat ("TimeAdaptor.IndexFromDate year out of range[{1},{2}]: {0}", year, min_year, max_year);
 				return 0;
 			}
 
@@ -138,7 +138,7 @@ namespace FSpot {
 			int max_year = endyear;
 		
 			if (year < min_year || year > max_year) {
-				Log.Debug ("TimeAdaptor.IndexFromPhoto year out of range[{1},{2}]: {0}", year, min_year, max_year);
+				Log.DebugFormat ("TimeAdaptor.IndexFromPhoto year out of range[{1},{2}]: {0}", year, min_year, max_year);
 				return 0;
 			}
 
diff --git a/src/UI.Dialog/AboutDialog.cs b/src/UI.Dialog/AboutDialog.cs
index dab0fb8..b681678 100644
--- a/src/UI.Dialog/AboutDialog.cs
+++ b/src/UI.Dialog/AboutDialog.cs
@@ -12,7 +12,7 @@
 using System;
 using System.IO;
 using Mono.Unix;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.UI.Dialog
 {
diff --git a/src/Updater.cs b/src/Updater.cs
index bc56161..7ccb85c 100644
--- a/src/Updater.cs
+++ b/src/Updater.cs
@@ -5,6 +5,7 @@ using System;
 using System.Collections;
 using Banshee.Database;
 using FSpot.Utils;
+using Hyena;
 using FSpot.UI.Dialog;
 
 namespace FSpot.Database {
@@ -643,7 +644,8 @@ namespace FSpot.Database {
 				}
 
 				db.CommitTransaction ();
-			} catch (Exception e) {Log.DebugException (e);
+			} catch (Exception e) {
+				Log.DebugException (e);
 				Log.Warning ("Rolling back database changes because of Exception");
 				// There was an error, roll back the database
 				db.RollbackTransaction ();
@@ -769,7 +771,7 @@ namespace FSpot.Database {
 			{
 				code ();
 				
-				Log.Debug ("Updated database from version {0} to {1}",
+				Log.DebugFormat ("Updated database from version {0} to {1}",
 						db_version.Value,
 						Version.ToString ());
 
diff --git a/src/UriCollection.cs b/src/UriCollection.cs
index a6d453b..2666eb9 100644
--- a/src/UriCollection.cs
+++ b/src/UriCollection.cs
@@ -129,7 +129,7 @@ namespace FSpot {
 				List<FileBrowsableItem> items = new List<FileBrowsableItem> ();
 				foreach (GLib.FileInfo info in file.EnumerateChildrenFinish (res)) {
 					SafeUri i = new SafeUri (file.GetChild (info.Name).Uri);
-					FSpot.Utils.Log.Debug ("testing uri = {0}", i);
+					Hyena.Log.DebugFormat ("testing uri = {0}", i);
 					if (FSpot.ImageFile.HasLoader (i))
 						items.Add (new FileBrowsableItem (i));
 				}
diff --git a/src/Utils/Cache.cs b/src/Utils/Cache.cs
index 7663fc2..13adaa7 100644
--- a/src/Utils/Cache.cs
+++ b/src/Utils/Cache.cs
@@ -10,6 +10,7 @@
 
 using System;
 using System.Collections.Generic;
+using Hyena;
 
 
 namespace FSpot.Utils
@@ -152,7 +153,7 @@ namespace FSpot.Utils
 
 		~DisposableCache ()
 		{
-			Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());		
+			Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());		
 			Clear ();	
 		}
 	}
diff --git a/src/Utils/FileExtensions.cs b/src/Utils/FileExtensions.cs
index 1f1a2dc..f8fbe8b 100644
--- a/src/Utils/FileExtensions.cs
+++ b/src/Utils/FileExtensions.cs
@@ -11,6 +11,7 @@ using System;
 using System.IO;
 using Mono.Unix;
 using GLib;
+using Hyena;
 
 namespace FSpot.Utils
 {
@@ -23,12 +24,12 @@ namespace FSpot.Utils
 			GLib.FileType ft = source.QueryFileType (GLib.FileQueryInfoFlags.None, cancellable);
 			
 			if (ft != GLib.FileType.Directory) {
-				Log.Debug ("Copying \"{0}\" to \"{1}\"", source.Path, target.Path);
+				Hyena.Log.DebugFormat ("Copying \"{0}\" to \"{1}\"", source.Path, target.Path);
 				return source.Copy (target, flags, cancellable, callback);
 			}
 			
 			if (!target.Exists) {
-				Log.Debug ("Creating directory: \"{0}\"", target.Path);
+				Hyena.Log.DebugFormat ("Creating directory: \"{0}\"", target.Path);
 				result = result && target.MakeDirectoryWithParents (cancellable);
 			}
 			
diff --git a/src/Utils/GdkUtils.cs b/src/Utils/GdkUtils.cs
index 043ccbd..acd6303 100644
--- a/src/Utils/GdkUtils.cs
+++ b/src/Utils/GdkUtils.cs
@@ -1,6 +1,7 @@
 using System;
 using Gdk;
 using System.Runtime.InteropServices;
+using Hyena;
 
 namespace FSpot.Utils {
 	public class GdkUtils {
diff --git a/src/Utils/Log.cs b/src/Utils/Log.cs
deleted file mode 100644
index db93bcd..0000000
--- a/src/Utils/Log.cs
+++ /dev/null
@@ -1,401 +0,0 @@
-//
-// Log.cs
-//
-// Author:
-//   Aaron Bockover <abockover@novell.com>
-//
-// Copyright (C) 2005-2007 Novell, Inc.
-//
-// 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.Text;
-using System.Collections.Generic;
-
-namespace FSpot.Utils
-{
-    public class LogNotifyEventArgs : EventArgs
-    {
-        private LogEntry entry;
-        
-        public LogNotifyEventArgs (LogEntry entry)
-        {
-            this.entry = entry;
-        }
-        
-        public LogEntry Entry {
-            get { return entry; }
-        }
-    }
-        
-    public enum LogEntryType
-    {
-        Trace,
-        Debug,
-        Warning,
-        Error,
-        Information
-    }
-    
-    public class LogEntry
-    {
-        private LogEntryType type;
-        private string message;
-        private string details;
-        private DateTime timestamp;
-        
-        internal LogEntry (LogEntryType type, string message, string details)
-        {
-            this.type = type;
-            this.message = message;
-            this.details = details;
-            this.timestamp = DateTime.Now;
-        }
-
-        public LogEntryType Type { 
-            get { return type; }
-        }
-        
-        public string Message { 
-            get { return message; } 
-        }
-        
-        public string Details { 
-            get { return details; } 
-        }
-
-        public DateTime TimeStamp { 
-            get { return timestamp; } 
-        }
-    }
-    
-    public static class Log
-    {
-        public static event EventHandler<LogNotifyEventArgs> Notify;
-        
-        private static Dictionary<uint, DateTime> timers = new Dictionary<uint, DateTime> ();
-        private static uint next_timer_id = 1;
-
-        private static bool debugging = false;
-        public static bool Debugging {
-            get { return debugging; }
-            set { debugging = value; }
-        }
-
-        private static bool tracing = false;
-        public static bool Tracing {
-            get { return tracing; }
-            set { tracing = value; }
-        }
-        
-        public static void Commit (LogEntryType type, string message, string details, bool showUser)
-        {
-            if (type == LogEntryType.Debug && !Debugging) {
-                return;
-            }
-
-            if (type == LogEntryType.Trace && !Tracing) {
-                return;
-            }
-        
-            if (type != LogEntryType.Information || (type == LogEntryType.Information && !showUser)) {
-                switch (type) {
-                    case LogEntryType.Error: ConsoleCrayon.ForegroundColor = ConsoleColor.Red; break;
-                    case LogEntryType.Warning: ConsoleCrayon.ForegroundColor = ConsoleColor.Yellow; break;
-                    case LogEntryType.Information: ConsoleCrayon.ForegroundColor = ConsoleColor.Green; break;
-                    case LogEntryType.Debug: ConsoleCrayon.ForegroundColor = ConsoleColor.Blue; break;
-                    case LogEntryType.Trace: ConsoleCrayon.ForegroundColor = ConsoleColor.Magenta; break;
-                }
-                
-                Console.Write ("[{0} {1:00}:{2:00}:{3:00}.{4:000}]", TypeString (type), DateTime.Now.Hour,
-                    DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);
-                
-                ConsoleCrayon.ResetColor ();
-                               
-                if (details != null) {
-                    Console.WriteLine (" {0} - {1}", message, details);
-                } else {
-                    Console.WriteLine (" {0}", message);
-                }
-            }
-            
-            if (showUser) {
-                OnNotify (new LogEntry (type, message, details));
-            }
-
-            if (type == LogEntryType.Trace) {
-                string str = String.Format ("MARK: {0}: {1}", message, details);
-                Mono.Unix.Native.Syscall.access(str, Mono.Unix.Native.AccessModes.F_OK);
-            }
-        }
-
-        private static string TypeString (LogEntryType type)
-        {
-            switch (type) {
-                case LogEntryType.Debug:         return "Debug";
-                case LogEntryType.Warning:       return "Warn ";
-                case LogEntryType.Error:         return "Error";
-                case LogEntryType.Information:   return "Info ";
-                case LogEntryType.Trace:         return "Trace";
-            }
-            return null;
-        }
-        
-        private static void OnNotify (LogEntry entry)
-        {
-            EventHandler<LogNotifyEventArgs> handler = Notify;
-            if (handler != null) {
-                handler (null, new LogNotifyEventArgs (entry));
-            }
-        }
-        
-        #region Timer Methods
-        
-        public static uint DebugTimerStart (string message)
-        {
-            return TimerStart (message, false);
-        }
-        
-        public static uint InformationTimerStart (string message)
-        {
-            return TimerStart (message, true);
-        }
-        
-        private static uint TimerStart (string message, bool isInfo)
-        {
-            if (!Debugging && !isInfo) {
-                return 0;
-            }
-            
-            if (isInfo) {
-                Information (message);
-            } else {
-                Debug (message);
-            }
-            
-            return TimerStart (isInfo);
-        }
-        
-        public static uint DebugTimerStart ()
-        {
-            return TimerStart (false);
-        }
-        
-        public static uint InformationTimerStart ()
-        {
-            return TimerStart (true);
-        }
-            
-        private static uint TimerStart (bool isInfo)
-        {
-            if (!Debugging && !isInfo) {
-                return 0;
-            }
-            
-            uint timer_id = next_timer_id++;
-            timers.Add (timer_id, DateTime.Now);
-            return timer_id;
-        }
-        
-        public static void DebugTimerPrint (uint id)
-        {
-            if (!Debugging) {
-                return;
-            }
-            
-            TimerPrint (id, "Operation duration: {0}", false);
-        }
-        
-        public static void DebugTimerPrint (uint id, string message)
-        {
-            if (!Debugging) {
-                return;
-            }
-            
-            TimerPrint (id, message, false);
-        }
-        
-        public static void InformationTimerPrint (uint id)
-        {
-            TimerPrint (id, "Operation duration: {0}", true);
-        }
-        
-        public static void InformationTimerPrint (uint id, string message)
-        {
-            TimerPrint (id, message, true);
-        }
-        
-        private static void TimerPrint (uint id, string message, bool isInfo)
-        {
-            if (!Debugging && !isInfo) {
-                return;
-            }
-            
-            DateTime finish = DateTime.Now;
-            
-            if (!timers.ContainsKey (id)) {
-                return;
-            }
-            
-            TimeSpan duration = finish - timers[id];
-            string d_message;
-            if (duration.TotalSeconds < 60) {
-                d_message = String.Format ("{0}s", duration.TotalSeconds);
-            } else {
-                d_message = duration.ToString ();
-            }
-            
-            if (isInfo) {
-                Information (message, d_message);
-            } else {
-                Debug (message, d_message);
-            }
-        }
-        
-        #endregion
-
-        #region Public Trace Methods
-        public static void Trace (string group, string format, params object [] args)
-        {
-            if (Tracing) {
-                Commit (LogEntryType.Trace, group, String.Format (format, args), false);
-            }
-        }
-        #endregion
-        
-        #region Public Debug Methods
-        public static void Debug (string message)
-        {
-            if (Debugging) {
-                Commit (LogEntryType.Debug, message, null, false);
-            }
-        }
- 
-		public static void Debug (string format, params object [] args)
-        {
-            if (Debugging) {
-                Debug (String.Format (format, args));
-            }
-        }
-	
-		public static void DebugException (Exception e)
-		{
-		    if (Debugging)
-		        Exception (e);
-		}
-	
-		public static void DebugException (string message, Exception e)
-		{
-		    if (Debugging)
-			Exception (message, e);
-	
-		}
-        #endregion
-        
-        #region Public Information Methods
-        public static void Information (string message, string details, bool showUser)
-        {
-            Commit (LogEntryType.Information, message, details, showUser);
-        }
-        
-        public static void Information (string message, bool showUser)
-        {
-            Information (message, null, showUser);
-        }
-        
-        public static void Information (string format, params object [] args)
-        {
-            Information (String.Format (format, args), null, false);
-        }
-        #endregion
-        
-        #region Public Warning Methods
-        public static void Warning (string message, string details, bool showUser)
-        {
-            Commit (LogEntryType.Warning, message, details, showUser);
-        }
-        
-        public static void Warning (string message, bool showUser)
-        {
-            Warning (message, null, showUser);
-        }
-
-		public static void Warning (string format, params object [] args)
-        {
-            Warning (String.Format (format, args), false);
-        }
-        #endregion
-        
-        #region Public Error Methods
-        public static void Error (string message, string details, bool showUser)
-        {
-            Commit (LogEntryType.Error, message, details, showUser);
-        }
-        
-        public static void Error (string message, bool showUser)
-        {
-            Error (message, null, showUser);
-        }
-
-        public static void Error (string format, params object [] args)
-        {
-            Error (String.Format (format, args), null, false);
-        }
-        #endregion
-        
-        #region Public Exception Methods
-        
-        public static void Exception (Exception e)
-        {
-            Exception (null, e);
-        }
-        
-        public static void Exception (string message, Exception e)
-        {
-            Stack<Exception> exception_chain = new Stack<Exception> ();
-            StringBuilder builder = new StringBuilder ();
-            
-            while (e != null) {
-                exception_chain.Push (e);
-                e = e.InnerException;
-            }
-            
-            while (exception_chain.Count > 0) {
-                e = exception_chain.Pop ();
-                builder.AppendFormat ("{0} (in `{1}')", e.Message, e.Source).AppendLine ();
-                builder.Append (e.StackTrace);
-                if (exception_chain.Count > 0) {
-                    builder.AppendLine ();
-                }
-            }
-        
-            // FIXME: We should save these to an actual log file
-            Log.Warning (message ?? String.Format ("Caught an exception {0}", e.GetType ().ToString ()), builder.ToString (), false);
-        }
-		
-		public static void Exception (Exception e, string format, params object [] args)
-		{
-			Exception (String.Format (format, args), e);
-		}
-		
-	#endregion
-    }
-}
diff --git a/src/Utils/Unix.cs b/src/Utils/Unix.cs
index 0ba09ce..099e510 100644
--- a/src/Utils/Unix.cs
+++ b/src/Utils/Unix.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Runtime.InteropServices;
+using Hyena;
 
 namespace FSpot.Utils {
 	public static class Unix {
@@ -54,7 +55,7 @@ namespace FSpot.Utils {
 		public static void Touch (string filename)
 		{
 			if (NativeMethods.UTime (filename, IntPtr.Zero) != 0)
-				Log.Debug ("touch on {0} failed", filename);
+				Log.DebugFormat ("touch on {0} failed", filename);
 		}
 	}
 }
diff --git a/src/Widgets/EditorPage.cs b/src/Widgets/EditorPage.cs
index ee15799..4db5672 100644
--- a/src/Widgets/EditorPage.cs
+++ b/src/Widgets/EditorPage.cs
@@ -20,6 +20,7 @@ using Mono.Unix;
 
 using System;
 using System.Collections.Generic;
+using Hyena;
 
 namespace FSpot.Widgets {
 	public class EditorPage : SidebarPage {
diff --git a/src/Widgets/Filmstrip.cs b/src/Widgets/Filmstrip.cs
index d1d7431..155cf85 100644
--- a/src/Widgets/Filmstrip.cs
+++ b/src/Widgets/Filmstrip.cs
@@ -672,7 +672,7 @@ namespace FSpot.Widgets
 
 		~Filmstrip ()
 		{
-			Log.Debug ("Finalizer called on {0}. Should be Disposed", GetType ());		
+			Log.DebugFormat ("Finalizer called on {0}. Should be Disposed", GetType ());
 			Dispose (false);
 		}
 			
diff --git a/src/Widgets/FindBar.cs b/src/Widgets/FindBar.cs
index 31e2ade..fad02d0 100644
--- a/src/Widgets/FindBar.cs
+++ b/src/Widgets/FindBar.cs
@@ -16,7 +16,7 @@ using Gdk;
 using Mono.Unix;
 
 using FSpot.Query;
-using FSpot.Utils;
+using Hyena;
 
 namespace FSpot.Widgets {
 	public class FindBar : HighlightedBox {
@@ -202,9 +202,9 @@ namespace FSpot.Widgets {
 		private static void PrintGroup (GroupCollection groups, string name)
 		{
 			Group group = groups [name];
-			Log.Debug ("Name: {2} (success = {1}) group: {0}", group, group.Success, name);
+			Log.DebugFormat ("Name: {2} (success = {1}) group: {0}", group, group.Success, name);
 			foreach (Capture capture in group.Captures) {
-				Log.Debug ("  Have capture: {0}", capture);
+				Log.DebugFormat ("  Have capture: {0}", capture);
 			}
 		}
 
diff --git a/src/Widgets/FolderTreeModel.cs b/src/Widgets/FolderTreeModel.cs
index 6b857ce..8c2f5a4 100644
--- a/src/Widgets/FolderTreeModel.cs
+++ b/src/Widgets/FolderTreeModel.cs
@@ -14,7 +14,7 @@ using Gtk;
 using GLib;
 
 using FSpot;
-using FSpot.Utils;
+using Hyena;
 
 using Banshee.Database;
 
@@ -110,7 +110,7 @@ namespace FSpot.Widgets
 				Uri base_uri = new Uri (reader["base_uri"].ToString ());
 				
 				if ( ! base_uri.IsAbsoluteUri) {
-					FSpot.Utils.Log.Error ("Uri must be absolute: {0}", base_uri.ToString ());
+					Hyena.Log.ErrorFormat ("Uri must be absolute: {0}", base_uri.ToString ());
 					continue;
 				}
 				
diff --git a/src/Widgets/InfoBox.cs b/src/Widgets/InfoBox.cs
index 2130ac3..d3042d4 100644
--- a/src/Widgets/InfoBox.cs
+++ b/src/Widgets/InfoBox.cs
@@ -23,6 +23,7 @@ using FSpot.Utils;
 using GLib;
 using GFile = GLib.File;
 using GFileInfo = GLib.FileInfo;
+using Hyena;
 
 // FIXME TODO: We want to use something like EClippedLabel here throughout so it handles small sizes
 // gracefully using ellipsis.
@@ -501,7 +502,7 @@ namespace FSpot.Widgets
 					}
 					//}
 			} catch (System.Exception e) {
-				FSpot.Utils.Log.Debug (e.StackTrace);
+				Hyena.Log.Debug (e.StackTrace);
 				info = new ImageInfo (null);			
 			}
 
@@ -575,7 +576,7 @@ namespace FSpot.Widgets
 					file_size_value_label.Text = Format.SizeForDisplay (file_info.Size);
 				} catch (GLib.GException e) {
 					file_size_value_label.Text = Catalog.GetString("(File read error)");
-					FSpot.Utils.Log.DebugException (e);
+					Hyena.Log.DebugException (e);
 				}
 			}
 			
@@ -662,7 +663,7 @@ namespace FSpot.Widgets
 						file_size += file_info.Size;
 					} catch (GLib.GException e) {
 						file_size = -1;
-						FSpot.Utils.Log.DebugException (e);
+						Hyena.Log.DebugException (e);
 						break;
 					}
 				}
@@ -715,7 +716,7 @@ namespace FSpot.Widgets
 				
 				hint.Dispose ();
 			} catch (System.Exception e) {
-				FSpot.Utils.Log.Debug (e.StackTrace);
+				Hyena.Log.Debug (e.StackTrace);
 				using (Gdk.Pixbuf empty = new Gdk.Pixbuf (Gdk.Colorspace.Rgb, true, 8, 256, 256)) {
 					empty.Fill (0x0);
 					histogram_image.Pixbuf = histogram.Generate (empty, max);
diff --git a/src/Widgets/RatingMenuItem.cs b/src/Widgets/RatingMenuItem.cs
index 775e91f..53d8f99 100644
--- a/src/Widgets/RatingMenuItem.cs
+++ b/src/Widgets/RatingMenuItem.cs
@@ -29,6 +29,7 @@
 using System;
 using Gtk;
 using Mono.Unix;
+using Hyena;
 
 namespace FSpot.Widgets
 {
@@ -57,7 +58,7 @@ namespace FSpot.Widgets
 			box.PackStart (label, false, false, 0);
 
 			if (parent is FullScreenView) {
-				FSpot.Utils.Log.Debug ("PARENT IS FSVIEW");
+				Log.Debug ("PARENT IS FSVIEW");
 				FullScreenView fsview = parent as FullScreenView;
 				entry = new Rating ((int)fsview.View.Item.Current.Rating, true);
 			} else if (App.Instance.Organizer.Selection.Count == 1)
diff --git a/src/Widgets/TagMenu.cs b/src/Widgets/TagMenu.cs
index 87d5785..3fa5ee4 100644
--- a/src/Widgets/TagMenu.cs
+++ b/src/Widgets/TagMenu.cs
@@ -5,6 +5,7 @@ using GtkBeans;
 using System;
 using FSpot;
 using FSpot.Utils;
+using Hyena;
 
 public class TagMenu : Menu {
 	private TagStore tag_store;
diff --git a/src/XmpTagsImporter.cs b/src/XmpTagsImporter.cs
index 5d106b7..990eb38 100644
--- a/src/XmpTagsImporter.cs
+++ b/src/XmpTagsImporter.cs
@@ -18,7 +18,6 @@ using FSpot.Xmp;
 using SemWeb;
 using SemWeb.Util;
 using Mono.Unix;
-using FSpot.Utils;
 using Hyena;
 
 namespace FSpot.Xmp {
@@ -201,7 +200,7 @@ namespace FSpot.Xmp {
 							tmp_ui = System.Convert.ToUInt32 (l.Value);
 						} catch {
 							// Set rating to 0, and continue
-							Log.Debug ("Found illegal rating >{0}< in predicate {1}. Rating cleared",
+							Log.DebugFormat ("Found illegal rating >{0}< in predicate {1}. Rating cleared",
 										 l.Value, stmt.Predicate.Uri);
 							tmp_ui = 0;
 						}
diff --git a/src/main.cs b/src/main.cs
index 0869b64..91a3521 100644
--- a/src/main.cs
+++ b/src/main.cs
@@ -12,6 +12,7 @@ using Mono.Addins.Setup;
 using FSpot.Utils;
 using FSpot.UI.Dialog;
 using FSpot.Extensions;
+using Hyena;
 
 namespace FSpot 
 {
@@ -88,7 +89,7 @@ namespace FSpot
 						return 1;
 					}
 					FSpot.Global.BaseDirectory = args [++i];
-					Log.Information ("BaseDirectory is now {0}", FSpot.Global.BaseDirectory);
+					Log.InformationFormat ("BaseDirectory is now {0}", FSpot.Global.BaseDirectory);
 					break;
 
 				case "-p": case "-photodir": case "--photodir":
@@ -97,7 +98,7 @@ namespace FSpot
 						return 1;
 					}
 					FSpot.Global.PhotoDirectory = System.IO.Path.GetFullPath (args [++i]);
-					Log.Information ("PhotoDirectory is now {0}", FSpot.Global.PhotoDirectory);
+					Log.InformationFormat ("PhotoDirectory is now {0}", FSpot.Global.PhotoDirectory);
 					break;
 
 				case "-i": case "-import": case "--import":
@@ -135,7 +136,8 @@ namespace FSpot
 					return 0;
 
 				case "--strace":
-					Log.Tracing = true;
+// FIXME: do we need this?				
+//					Log.Tracing = true;
 					break;
 
 				case "--debug":
@@ -163,7 +165,7 @@ namespace FSpot
 						break;
 					if (args [i].StartsWith ("--trace"))
 						break;
-					Log.Debug ("Unparsed argument >>{0}<<", args [i]);
+					Log.DebugFormat ("Unparsed argument >>{0}<<", args [i]);
 					break;
 				}
 			}
@@ -184,7 +186,7 @@ namespace FSpot
 			string maj_version = String.Join (".", Defines.VERSION.Split ('.'), 0, 3);
 			foreach (AddinRepository repo in setupService.Repositories.GetRepositories ())
 				if (repo.Url.StartsWith ("http://addins.f-spot.org/") && !repo.Url.StartsWith ("http://addins.f-spot.org/" + maj_version)) {
-					Log.Information ("Unregistering {0}", repo.Url);
+					Log.InformationFormat ("Unregistering {0}", repo.Url);
 					setupService.Repositories.RemoveRepository (repo.Url);
 				}
 			setupService.Repositories.RegisterRepository (null, "http://addins.f-spot.org/" + maj_version, false);
