diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
index 031bbb9..04019c5 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
@@ -35,15 +35,14 @@ using Mono.Unix;
 using Banshee.Base;
 using Banshee.Collection;
 using Banshee.Sources;
 using Folder = Banshee.IO.Directory;
 
 namespace Banshee.Playlists.Formats
 {
     public class M3uPlaylistFormat : PlaylistFormatBase
     {
         public static readonly PlaylistFormatDescription FormatDescription = new PlaylistFormatDescription(
             typeof(M3uPlaylistFormat), MagicHandler, Catalog.GetString("MPEG Version 3.0 Extended (*.m3u)"),
-            "m3u", new string [] {"audio/x-mpegurl", "audio/m3u", "audio/mpeg-url"});
+            "m3u", new string [] {"audio/x-nokia-mpegurl", "audio/nokia-m3u", "audio/nokia-mpeg-url"});
 
         public static bool MagicHandler(StreamReader reader)
         {
@@ -51,18 +50,22 @@ namespace Banshee.Playlists.Formats
             if(line == null) {
                 return false;
             }
-
-            line = line.Trim();
-            return line == "#EXTM3U" || line.StartsWith("http") || Banshee.Collection.Database.DatabaseImportManager.IsWhiteListedFile (line);
+			
+            line = reader.ReadToEnd();
+            if (line.Contains(@"E:"))
+                return true;
+            return false;
         }
 
         public M3uPlaylistFormat()
         {
         }
 
         public override void Load(StreamReader reader, bool validateHeader)
         {
             string line;
+            string toReplace = getPathReplacement();
+
             Dictionary<string, object> element = null;
 
             while((line = reader.ReadLine()) != null) {
@@ -88,7 +91,10 @@ namespace Banshee.Playlists.Formats
                 }
 
                 try {
-                    element["uri"] = ResolveUri(line);
+                    line = line.Replace (@"E:", toReplace)
+                               .Replace (@"\", Convert.ToString(Path.DirectorySeparatorChar));
+                    Hyena.Log.InformationFormat ("Nokia playlist import: {0}", line);
+                    element["uri"] = line;
                 } catch {
                     Elements.Remove(element);
                 }
@@ -114,6 +120,10 @@ namespace Banshee.Playlists.Formats
         {
             using(StreamWriter writer = new StreamWriter(stream)) {
                 writer.WriteLine("#EXTM3U");
+
+                string toReplace = getPathReplacement();
+
+                string newPath;
                 TrackInfo track;
                 for (int i = 0; i < source.TrackModel.Count; i++) {
                     track = source.TrackModel[i];
@@ -121,15 +131,32 @@ namespace Banshee.Playlists.Formats
                     if(duration <= 0) {
                         duration = -1;
                     }
-
                     writer.WriteLine("#EXTINF:{0},{1} - {2}", duration, track.DisplayArtistName, track.DisplayTrackTitle);
-                    string trackpath = ExportUri (track.Uri);
-                    if (FolderSeparator == Folder.DosSeparator) {
-                        trackpath = trackpath.Replace (Folder.UnixSeparator, Folder.DosSeparator);
-                    }
-                    writer.WriteLine( trackpath );
+                    newPath = track.Uri.AbsolutePath.Replace(toReplace, @"E:").Replace(System.IO.Path.DirectorySeparatorChar, '\\');
+                    Hyena.Log.Information(newPath);
+                    writer.WriteLine(newPath);
                 }
             }
         }
+
+        /// <summary>
+        /// This function uses the path of the playlist to find the
+        /// mount point or drive.
+        /// </summary>
+        private string getPathReplacement() {
+            string toReplace = null;
+            string basePath = BaseUri.AbsolutePath;
+            DriveInfo[] di = DriveInfo.GetDrives();
+
+            foreach(DriveInfo i in di) {
+                if (basePath.Contains(i.RootDirectory.FullName) &&
+                    (string.IsNullOrEmpty(toReplace) ||
+                    i.RootDirectory.FullName.Length > toReplace.Length)) {
+                    toReplace = i.RootDirectory.FullName;
+                }
+            }
+            return toReplace;
+        }
     }
 }
