diff --git a/mailnews/news/src/nsNewsUtils.cpp b/mailnews/news/src/nsNewsUtils.cpp
index e04c4dfe2c84036a8a3cddf7a9227e01b4ef8c01..6cc833a99317ee007076766616ad4fed74d1267f 100644
--- a/mailnews/news/src/nsNewsUtils.cpp
+++ b/mailnews/news/src/nsNewsUtils.cpp
@@ -20,6 +20,7 @@
 #include "nsNewsUtils.h"
 #include "nsIServiceManager.h"
 #include "prsystem.h"
+#include "nsCOMPtr.h"
 
 // stuff for temporary root folder hack
 #include "nsIMsgMailSession.h"
@@ -38,31 +39,17 @@ nsGetNewsRoot(nsFileSpec &result)
   nsresult rv = NS_OK;
 
   if (gNewsRoot == nsnull) {
-    nsIMsgMailSession *session;
-    rv = nsServiceManager::GetService(kMsgMailSessionCID,
-                                      nsIMsgMailSession::GetIID(),
-                                      (nsISupports **)&session);
+    NS_WITH_SERVICE(nsIMsgMailSession, session, kMsgMailSessionCID, &rv);
     
     if (NS_SUCCEEDED(rv)) {
-      nsIMsgIncomingServer *server;
-      rv = session->GetCurrentServer(&server);
-      if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get current server\n");
-      if (NS_SUCCEEDED(rv)) {
-        nsINntpIncomingServer *nntpServer;
-        rv = server->QueryInterface(nsINntpIncomingServer::GetIID(),
-                                    (void **)&nntpServer);
-        if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get nntp server\n");
-        if (NS_SUCCEEDED(rv)) {
-          rv = nntpServer->GetRootFolderPath(&gNewsRoot);
-          if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get root\n");
-          NS_RELEASE(nntpServer);
-        }
-        NS_RELEASE(server);
-        
-      }
-      nsServiceManager::ReleaseService(kMsgMailSessionCID, session);
+      nsCOMPtr<nsIMsgIncomingServer> server;
+      rv = session->GetCurrentServer(getter_AddRefs(server));
+      
+      if (NS_SUCCEEDED(rv))
+          rv = server->GetLocalPath(&gNewsRoot);
     }
   } /* if (gNewsRoot == nsnull) .. */
+  
   result = gNewsRoot;
   return rv;
 }
@@ -263,4 +250,4 @@ nsresult nsBuildNewsMessageURI(const nsFileSpec& path, PRUint32 key, char** uri)
 	return NS_OK;
 
 
-}
\ No newline at end of file
+}