Merge branch 'master' of ssh://sbrandys@git.eclipse.org/gitroot/orion/org.eclipse.orion.client.git
diff --git a/bundles/org.eclipse.orion.client.core/web/edit/setup.js b/bundles/org.eclipse.orion.client.core/web/edit/setup.js
index f2184e8..ab720dc 100644
--- a/bundles/org.eclipse.orion.client.core/web/edit/setup.js
+++ b/bundles/org.eclipse.orion.client.core/web/edit/setup.js
@@ -13,14 +13,14 @@
 /*global define eclipse:true orion:true dojo dijit window*/
 
 define(['require', 'dojo', 'orion/selection', 'orion/status', 'orion/dialogs',
-        'orion/commands', 'orion/util', 'orion/favorites', 'orion/fileClient', 'orion/searchClient', 'orion/globalCommands', 'orion/outliner',
+        'orion/commands', 'orion/util', 'orion/favorites', 'orion/fileClient', 'orion/taskClient', 'orion/searchClient', 'orion/globalCommands', 'orion/outliner',
         'orion/problems', 'orion/editor/contentAssist', 'orion/editorCommands', 'orion/editor/editorFeatures', 'orion/editor/editor', 'orion/syntaxchecker',
         'orion/editor/textMateStyler', 'orion/breadcrumbs', 'examples/textview/textStyler', 'orion/textview/textView', 'orion/textview/textModel', 
         'orion/textview/projectionTextModel', 'orion/textview/keyBinding','orion/searchAndReplace/textSearcher','orion/searchAndReplace/orionTextSearchAdaptor',
         'orion/editor/asyncStyler', 'orion/edit/dispatcher', 'orion/contentTypes',
         'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/eWebBorderContainer' ], 
 		function(require, dojo, mSelection, mStatus, mDialogs, mCommands, mUtil, mFavorites,
-				mFileClient, mSearchClient, mGlobalCommands, mOutliner, mProblems, mContentAssist, mEditorCommands, mEditorFeatures, mEditor,
+				mFileClient, mTaskClient, mSearchClient, mGlobalCommands, mOutliner, mProblems, mContentAssist, mEditorCommands, mEditorFeatures, mEditor,
 				mSyntaxchecker, mTextMateStyler, mBreadcrumbs, mTextStyler, mTextView, mTextModel, mProjectionTextModel, mKeyBinding, mSearcher,
 				mSearchAdaptor, mAsyncStyler, mDispatcher, mContentTypes) {
 	
@@ -40,7 +40,7 @@
 	// Initialize the plugin registry
 	(function() {
 		selection = new mSelection.Selection(serviceRegistry);
-		statusReportingService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+		statusReportingService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 		new mDialogs.DialogService(serviceRegistry);
 		commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry, selection: selection});
 
diff --git a/bundles/org.eclipse.orion.client.core/web/index.js b/bundles/org.eclipse.orion.client.core/web/index.js
index a84eef1..80af190 100644
--- a/bundles/org.eclipse.orion.client.core/web/index.js
+++ b/bundles/org.eclipse.orion.client.core/web/index.js
@@ -12,9 +12,9 @@
 /*jslint browser:true devel:true*/
 /*global define*/
 
-define(['require', 'dojo', 'orion/bootstrap', 'orion/commands', 'orion/fileClient', 'orion/searchClient', 'orion/status', 'orion/globalCommands',
+define(['require', 'dojo', 'orion/bootstrap', 'orion/commands', 'orion/fileClient', 'orion/taskClient', 'orion/searchClient', 'orion/status', 'orion/globalCommands',
         'dojo/parser', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane'/*, 'dojox/widget/Portlet', 'dojox/widget/FeedPortlet'*/], 
-		function(require, dojo, mBootstrap, mCommands, mFileClient, mSearchClient, mStatus, mGlobalCommands) {
+		function(require, dojo, mBootstrap, mCommands, mFileClient, mTaskClient, mSearchClient, mStatus, mGlobalCommands) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -23,7 +23,7 @@
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 			var fileClient = new mFileClient.FileClient(serviceRegistry);
 			var searcher = new mSearchClient.Searcher({serviceRegistry: serviceRegistry, commandService: commandService, fileService: fileClient});
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 				
 			// global commands
 			mGlobalCommands.generateBanner("toolbar", serviceRegistry, commandService, preferences, searcher);
diff --git a/bundles/org.eclipse.orion.client.core/web/navigate/table.js b/bundles/org.eclipse.orion.client.core/web/navigate/table.js
index 8a476e0..1662d6a 100644
--- a/bundles/org.eclipse.orion.client.core/web/navigate/table.js
+++ b/bundles/org.eclipse.orion.client.core/web/navigate/table.js
@@ -13,18 +13,18 @@
 /*browser:true*/
 
 define(['dojo', 'dijit', 'orion/bootstrap', 'orion/selection', 'orion/status', 'orion/dialogs',
-        'orion/ssh/sshTools', 'orion/commands', 'orion/favorites', 'orion/searchClient', 'orion/fileClient', 'orion/globalCommands',
+        'orion/ssh/sshTools', 'orion/commands', 'orion/favorites', 'orion/searchClient', 'orion/fileClient', 'orion/taskClient', 'orion/globalCommands',
         'orion/fileCommands', 'orion/explorer-table', 'orion/util', 'orion/contentTypes',
         'dojo/parser', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/eWebBorderContainer'], 
 		function(dojo, dijit, mBootstrap, mSelection, mStatus, mDialogs, mSsh, mCommands, mFavorites, 
-				mSearchClient, mFileClient, mGlobalCommands, mFileCommands, mExplorerTable, mUtil, mContentTypes) {
+				mSearchClient, mFileClient, mTaskClient, mGlobalCommands, mFileCommands, mExplorerTable, mUtil, mContentTypes) {
 
 dojo.addOnLoad(function(){
 	mBootstrap.startup().then(function(core) {
 		var serviceRegistry = core.serviceRegistry;
 		var preferences = core.preferences;
 		var selection = new mSelection.Selection(serviceRegistry);		
-		new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+		new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 		new mDialogs.DialogService(serviceRegistry);
 		new mSsh.SshService(serviceRegistry);
 		
diff --git a/bundles/org.eclipse.orion.client.core/web/orion/status.js b/bundles/org.eclipse.orion.client.core/web/orion/status.js
index 4dd614b..d5dfed2 100644
--- a/bundles/org.eclipse.orion.client.core/web/orion/status.js
+++ b/bundles/org.eclipse.orion.client.core/web/orion/status.js
@@ -17,12 +17,14 @@
 	 * @class Service for reporting status

 	 * @name orion.status.StatusReportingService

 	 * @param {orion.serviceregistry.ServiceRegistry} serviceRegistry

+	 * @param {orion.taskclient.TaskClient} taskClient

 	 * @param {String} domId ID of the DOM node under which status will be displayed.

 	 * @param {String} progressDomId ID of the DOM node used to display progress messages.

 	 */

-	function StatusReportingService(serviceRegistry, domId, progressDomId) {

+	function StatusReportingService(serviceRegistry, taskClient, domId, progressDomId) {

 		this._serviceRegistry = serviceRegistry;

 		this._serviceRegistration = serviceRegistry.registerService("orion.page.message", this);

+		this._taskClient = taskClient;

 		this.domId = domId;

 		this.progressDomId = progressDomId || domId;

 	}

@@ -155,7 +157,7 @@
 			return deferred.then(function(result) {

 				//see if we are dealing with a progress resource

 				if (result && result.Location && result.Message && result.Running) {

-					return that._doProgressWhile(result);

+					return dojo.hitch(that, that._doProgressWhile)(result);

 				}

 				//clear the progress message

 				that.setProgressMessage("");

@@ -174,18 +176,13 @@
 		 */	

 		_doProgressWhile: function(progress) {

 			var deferred = new dojo.Deferred();

+			var that = this;

 			//sleep for awhile before we get more progress

 			window.setTimeout(function() {

-				dojo.xhrGet({

-					url: progress.Location,

-					headers: { "Orion-Version" : "1"},

-					handleAs: "json",

-					timeout: 15000,

-					load: function(jsonData, ioArgs) {

+				that._taskClient.getTask(progress.Location).then(function(jsonData, ioArgs) {

 						//jsonData is either the final result or a progress resource

 						deferred.callback(jsonData);

-					}

-				});

+					});

 			}, 2000);

 			//recurse until operation completes

 			return this.showWhile(deferred, progress.Message);

diff --git a/bundles/org.eclipse.orion.client.core/web/orion/taskClient.js b/bundles/org.eclipse.orion.client.core/web/orion/taskClient.js
index 4668692..a9ad428 100644
--- a/bundles/org.eclipse.orion.client.core/web/orion/taskClient.js
+++ b/bundles/org.eclipse.orion.client.core/web/orion/taskClient.js
@@ -130,7 +130,9 @@
 				});

 				return result;

 			},

-			

+			getTask: function(taskLocation){

+				return _doServiceCall(this._getService(taskLocation), "getTask", arguments);

+			},

 			removeCompletedTasks: function(){

 				var results = [];

 				for(var i=0; i<this._services.length; i++){

diff --git a/bundles/org.eclipse.orion.client.core/web/plugin/install.js b/bundles/org.eclipse.orion.client.core/web/plugin/install.js
index 8649c34..e3a69b8 100644
--- a/bundles/org.eclipse.orion.client.core/web/plugin/install.js
+++ b/bundles/org.eclipse.orion.client.core/web/plugin/install.js
@@ -12,10 +12,10 @@
 /*jslint browser:true devel:true*/
 /*global define window dijit dojo eclipse widgets serviceRegistry:true*/
 
-define(['dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient',
+define(['dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient', 'orion/taskClient',
 	        'orion/searchClient', 'orion/globalCommands',
 	        'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane'], 
-			function(dojo, mBootstrap, mStatus, mCommands, mFileClient, mSearchClient, mGlobalCommands) {
+			function(dojo, mBootstrap, mStatus, mCommands, mFileClient, mTaskClient, mSearchClient, mGlobalCommands) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -28,7 +28,7 @@
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 			var fileClient = new mFileClient.FileClient(serviceRegistry);
 			var searcher = new mSearchClient.Searcher({serviceRegistry: serviceRegistry, commandService: commandService, fileService: fileClient});
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 				
 			// global commands
 			mGlobalCommands.generateBanner("toolbar", serviceRegistry, commandService, preferences, searcher);
diff --git a/bundles/org.eclipse.orion.client.core/web/plugin/list.js b/bundles/org.eclipse.orion.client.core/web/plugin/list.js
index 2b98165..f90a215 100644
--- a/bundles/org.eclipse.orion.client.core/web/plugin/list.js
+++ b/bundles/org.eclipse.orion.client.core/web/plugin/list.js
@@ -12,10 +12,10 @@
 /*jslint browser:true devel:true*/
 /*global define dijit dojo orion widgets serviceRegistry:true window*/
 
-define(['require', 'dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient',
+define(['require', 'dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient', 'orion/taskClient',
 	        'orion/searchClient', 'orion/globalCommands', 'orion/dialogs',
 	        'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/RegistryTree'], 
-			function(require, dojo, mBootstrap, mStatus, mCommands, mFileClient, mSearchClient, mGlobalCommands, mDialogs) {
+			function(require, dojo, mBootstrap, mStatus, mCommands, mFileClient, mTaskClient, mSearchClient, mGlobalCommands, mDialogs) {
 
 dojo.addOnLoad(function() {
 	mBootstrap.startup().then(function(core) {
@@ -28,7 +28,7 @@
 		var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 		var fileClient = new mFileClient.FileClient(serviceRegistry);
 		var searcher = new mSearchClient.Searcher({serviceRegistry: serviceRegistry, commandService: commandService, fileService: fileClient});
-		var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+		var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 		var tree;
 		
 		var initTree = function() {
diff --git a/bundles/org.eclipse.orion.client.core/web/plugins/taskPlugin.html b/bundles/org.eclipse.orion.client.core/web/plugins/taskPlugin.html
index 65b4bc8..6a8d6f9 100644
--- a/bundles/org.eclipse.orion.client.core/web/plugins/taskPlugin.html
+++ b/bundles/org.eclipse.orion.client.core/web/plugins/taskPlugin.html
@@ -32,6 +32,16 @@
 						timeout: 15000
 					});
 				},
+				getTask: function(taskLocation){
+					return dojo.xhrGet({
+						url: taskLocation , 
+						headers: {
+							"Orion-Version": "1"
+						},
+						handleAs: "json",
+						timeout: 15000
+					});
+				},
 				getTasksLongpolling: function(longpollingId){
 					
 					var args = {
diff --git a/bundles/org.eclipse.orion.client.core/web/search/search.js b/bundles/org.eclipse.orion.client.core/web/search/search.js
index 0daf370..ccd987d 100644
--- a/bundles/org.eclipse.orion.client.core/web/search/search.js
+++ b/bundles/org.eclipse.orion.client.core/web/search/search.js
@@ -13,10 +13,10 @@
 /*browser:true*/
 
 define(['require', 'dojo', 'orion/bootstrap', 'orion/status','orion/dialogs',
-        'orion/commands', 'orion/favorites', 'orion/searchClient', 'orion/fileClient', 'orion/searchResults', 'orion/breadcrumbs', 'orion/globalCommands',
+        'orion/commands', 'orion/favorites', 'orion/searchClient', 'orion/fileClient', 'orion/taskClient', 'orion/searchResults', 'orion/breadcrumbs', 'orion/globalCommands',
         'dojo/parser', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/eWebBorderContainer'], 
 		function(require, dojo, mBootstrap, mStatus, mDialogs, mCommands, mFavorites, 
-				mSearchClient, mFileClient, mSearchResults, mBreadcrumbs, mGlobalCommands) {
+				mSearchClient, mFileClient, mTaskClient, mSearchResults, mBreadcrumbs, mGlobalCommands) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -26,7 +26,7 @@
 			dojo.parser.parse();
 
 			var dialogService = new mDialogs.DialogService(serviceRegistry);
-			new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 			// Favorites
 			new mFavorites.FavoritesService({serviceRegistry: serviceRegistry});
diff --git a/bundles/org.eclipse.orion.client.core/web/sites/site.js b/bundles/org.eclipse.orion.client.core/web/sites/site.js
index 328413c..3a9828a 100644
--- a/bundles/org.eclipse.orion.client.core/web/sites/site.js
+++ b/bundles/org.eclipse.orion.client.core/web/sites/site.js
@@ -16,9 +16,9 @@
  * Glue code for site.html
  */
 define(['dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 
-	        'orion/fileClient', 'orion/searchClient', 'orion/dialogs', 'orion/globalCommands', 'orion/siteService', 'orion/siteUtils', 'orion/siteTree', 'orion/treetable', 
+	        'orion/fileClient', 'orion/taskClient', 'orion/searchClient', 'orion/dialogs', 'orion/globalCommands', 'orion/siteService', 'orion/siteUtils', 'orion/siteTree', 'orion/treetable', 
 	        'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/SiteEditor'], 
-			function(dojo, mBootstrap, mStatus, mCommands, mFileClient, mSearchClient, mDialogs, mGlobalCommands, mSiteService, mSiteUtils, mSiteTree, mTreeTable) {
+			function(dojo, mBootstrap, mStatus, mCommands, mFileClient, mTaskClient, mSearchClient, mDialogs, mGlobalCommands, mSiteService, mSiteUtils, mSiteTree, mTreeTable) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -29,7 +29,7 @@
 			
 			// Register services
 			var dialogService = new mDialogs.DialogService(serviceRegistry);
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 		
 			var fileClient = new mFileClient.FileClient(serviceRegistry, function(reference) {
diff --git a/bundles/org.eclipse.orion.client.core/web/sites/sites.js b/bundles/org.eclipse.orion.client.core/web/sites/sites.js
index 03b0730..e6131b5 100644
--- a/bundles/org.eclipse.orion.client.core/web/sites/sites.js
+++ b/bundles/org.eclipse.orion.client.core/web/sites/sites.js
@@ -16,10 +16,10 @@
  * Glue code for sites.html
  */
 
-define(['require', 'dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient',
+define(['require', 'dojo', 'orion/bootstrap', 'orion/status', 'orion/commands', 'orion/fileClient', 'orion/taskClient',
 	        'orion/searchClient', 'orion/dialogs', 'orion/globalCommands', 'orion/siteService', 'orion/siteUtils', 'orion/siteTree', 'orion/treetable', 
 	        'dojo/parser', 'dojo/hash', 'dojo/date/locale', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/NewSiteDialog'], 
-			function(require, dojo, mBootstrap, mStatus, mCommands, mFileClient, mSearchClient, mDialogs, mGlobalCommands, mSiteService, mSiteUtils, mSiteTree, mTreeTable) {
+			function(require, dojo, mBootstrap, mStatus, mCommands, mFileClient, mTaskClient, mSearchClient, mDialogs, mGlobalCommands, mSiteService, mSiteUtils, mSiteTree, mTreeTable) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -30,7 +30,7 @@
 		
 			// Register services
 			var dialogService = new mDialogs.DialogService(serviceRegistry);
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 	
 			var siteService = new mSiteService.SiteService(serviceRegistry);
diff --git a/bundles/org.eclipse.orion.client.core/web/tasks/list.js b/bundles/org.eclipse.orion.client.core/web/tasks/list.js
index 319a606..8ff4c6d 100644
--- a/bundles/org.eclipse.orion.client.core/web/tasks/list.js
+++ b/bundles/org.eclipse.orion.client.core/web/tasks/list.js
@@ -24,8 +24,8 @@
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry, selection: selection});
 			var fileClient = new mFileClient.FileClient(serviceRegistry);
 			var searcher = new mSearchClient.Searcher({serviceRegistry: serviceRegistry, commandService: commandService, fileService: fileClient});
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
 			var taskClient = new mTaskClient.TaskClient(serviceRegistry);
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, taskClient, "statusPane", "notifications");
 				
 			var taskTable = new mTaskTable.TasksExplorer(serviceRegistry, selection, "tasks-lisk", "pageActions", "selectionTools");
 			
diff --git a/bundles/org.eclipse.orion.client.git/web/git/git-clone.js b/bundles/org.eclipse.orion.client.git/web/git/git-clone.js
index aa18feb..a8cfca4 100644
--- a/bundles/org.eclipse.orion.client.git/web/git/git-clone.js
+++ b/bundles/org.eclipse.orion.client.git/web/git/git-clone.js
@@ -12,10 +12,10 @@
 /*global dojo dijit window eclipse serviceRegistry:true widgets alert*/
 /*browser:true*/
 define(['dojo', 'orion/bootstrap', 'orion/status', 'orion/commands',
-        'orion/dialogs', 'orion/selection', 'orion/fileClient', 'orion/searchClient', 'orion/fileClient', 'orion/globalCommands', 'orion/git/gitClient',
+        'orion/dialogs', 'orion/selection', 'orion/fileClient', 'orion/taskClient', 'orion/searchClient', 'orion/fileClient', 'orion/globalCommands', 'orion/git/gitClient',
         'orion/ssh/sshTools', 'orion/git/git-clone-details', 'orion/git/git-clones-explorer', 'orion/git/gitCommands',
 	    'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/eWebBorderContainer'], 
-		function(dojo, mBootstrap, mStatus, mCommands, mDialogs, mSelection, mFileClient,
+		function(dojo, mBootstrap, mStatus, mCommands, mDialogs, mSelection, mFileClient, mTaskClient,
 					mSearchClient, mFileClient, mGlobalCommands, mGitClient, mSshTools, mGitCloneDetails, mGitClonesExplorer, mGitCommands) {
 
 	mBootstrap.startup().then(function(core) {
@@ -24,7 +24,7 @@
 		document.body.style.visibility = "visible";
 		dojo.parser.parse();
 		
-		new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+		new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 		new mDialogs.DialogService(serviceRegistry);
 		var selection = new mSelection.Selection(serviceRegistry);
 		new mSshTools.SshService(serviceRegistry);
diff --git a/bundles/org.eclipse.orion.client.git/web/git/git-log.js b/bundles/org.eclipse.orion.client.git/web/git/git-log.js
index 19cfaf3..faef988 100644
--- a/bundles/org.eclipse.orion.client.git/web/git/git-log.js
+++ b/bundles/org.eclipse.orion.client.git/web/git/git-log.js
@@ -12,10 +12,10 @@
 /*global window define document dijit */
 /*browser:true*/
 define(['require', 'dojo', 'orion/bootstrap', 'orion/status', 'orion/commands',
-        'orion/auth', 'orion/dialogs', 'orion/selection', 'orion/fileClient', 'orion/searchClient', 'orion/globalCommands', 'orion/git/gitClient',
+        'orion/auth', 'orion/dialogs', 'orion/selection', 'orion/fileClient', 'orion/taskClient', 'orion/searchClient', 'orion/globalCommands', 'orion/git/gitClient',
         'orion/breadcrumbs', 'orion/ssh/sshTools', 'orion/git/git-commit-details', 'orion/git/git-commit-navigator', 'orion/git/gitCommands',
 	    'orion/links', 'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane', 'orion/widgets/eWebBorderContainer'], 
-		function(require, dojo, mBootstrap, mStatus, mCommands, mAuth, mDialogs, mSelection, mFileClient,
+		function(require, dojo, mBootstrap, mStatus, mCommands, mAuth, mDialogs, mSelection, mFileClient, mTaskClient,
 					mSearchClient, mGlobalCommands, mGitClient, mBreadcrumbs, mSshTools, mGitCommitDetails, mGitCommitNavigator, mGitCommands, mLinks) {
 
 // TODO: This is naughty -- feel bad and then fix it please
@@ -29,7 +29,7 @@
 			dojo.parser.parse();
 			
 		
-			new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 			new mDialogs.DialogService(serviceRegistry);
 			var selection = new mSelection.Selection(serviceRegistry);
 			new mSshTools.SshService(serviceRegistry);
diff --git a/bundles/org.eclipse.orion.client.git/web/git/git-status.js b/bundles/org.eclipse.orion.client.git/web/git/git-status.js
index f251058..372ab72 100644
--- a/bundles/org.eclipse.orion.client.git/web/git/git-status.js
+++ b/bundles/org.eclipse.orion.client.git/web/git/git-status.js
@@ -10,9 +10,9 @@
  ******************************************************************************/
 
 define(['dojo', 'orion/bootstrap', 'orion/status',  'orion/commands',
-	        'orion/searchClient', 'orion/fileClient', 'orion/globalCommands', 'orion/git/gitClient', 'orion/git/git-status-table', 'orion/breadcrumbs','orion/dialogs','orion/ssh/sshTools',
+	        'orion/searchClient', 'orion/fileClient', 'orion/taskClient', 'orion/globalCommands', 'orion/git/gitClient', 'orion/git/git-status-table', 'orion/breadcrumbs','orion/dialogs','orion/ssh/sshTools',
 	        'dojo/parser', 'dojo/hash', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane'], 
-			function(dojo, mBootstrap, mStatus, mCommands, mSearchClient, mFileClient, mGlobalCommands, mGitClient, mGitStatusTable, mBreadcrumbs,mDialogs,mSshTools) {
+			function(dojo, mBootstrap, mStatus, mCommands, mSearchClient, mFileClient, mTaskClient, mGlobalCommands, mGitClient, mGitStatusTable, mBreadcrumbs,mDialogs,mSshTools) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -30,7 +30,7 @@
 		
 			new mDialogs.DialogService(serviceRegistry);
 			
-			var statusService = new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			var statusService = new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 		
 			mGlobalCommands.generateBanner("toolbar", serviceRegistry, commandService, preferences, searcher);
 		
diff --git a/bundles/org.eclipse.orion.client.users.ui/web/orion/profile/usersUtil.js b/bundles/org.eclipse.orion.client.users.ui/web/orion/profile/usersUtil.js
index 7440297..5be1168 100644
--- a/bundles/org.eclipse.orion.client.users.ui/web/orion/profile/usersUtil.js
+++ b/bundles/org.eclipse.orion.client.users.ui/web/orion/profile/usersUtil.js
@@ -35,9 +35,7 @@
 				var selectionTools = dojo.byId(selectionToolbarId);
 				if (selectionTools) {
 					dojo.empty(selectionTools);
-					registry.getService("orion.page.command").then(function(commandService) {
-						commandService.renderCommands(selectionTools, "dom", selections, explorer, "tool");
-					});
+					registry.getService("orion.page.command").renderCommands(selectionTools, "dom", selections, explorer, "tool");
 				}
 			});
 		}
diff --git a/bundles/org.eclipse.orion.client.users.ui/web/profile/user-profile.js b/bundles/org.eclipse.orion.client.users.ui/web/profile/user-profile.js
index 7b31fcd..d1f12db 100644
--- a/bundles/org.eclipse.orion.client.users.ui/web/profile/user-profile.js
+++ b/bundles/org.eclipse.orion.client.users.ui/web/profile/user-profile.js
@@ -11,9 +11,9 @@
 /*global dojo dijit window eclipse:true*/
 
 define(['dojo', 'orion/bootstrap', 'orion/commands', 'orion/profile/usersClient', 'orion/profile/profile',
-	        'orion/searchClient', 'orion/globalCommands', 'orion/status',
+	        'orion/taskClient', 'orion/searchClient', 'orion/globalCommands', 'orion/status',
 	        'dojo/parser', 'dijit/layout/BorderContainer', 'dijit/layout/ContentPane'], 
-			function(dojo, mBootstrap, mCommands, mUsersClient, mProfile, mSearchClient, mGlobalCommands, mStatus) {
+			function(dojo, mBootstrap, mCommands, mUsersClient, mProfile, mTaskClient, mSearchClient, mGlobalCommands, mStatus) {
 
 	dojo.addOnLoad(function() {
 		mBootstrap.startup().then(function(core) {
@@ -26,7 +26,7 @@
 			var commandService = new mCommands.CommandService({serviceRegistry: serviceRegistry});
 			var searcher = new mSearchClient.Searcher({serviceRegistry: serviceRegistry, commandService: commandService});
 			var usersClient = new mUsersClient.UsersClient(serviceRegistry, pluginRegistry);
-			new mStatus.StatusReportingService(serviceRegistry, "statusPane", "notifications");
+			new mStatus.StatusReportingService(serviceRegistry, new mTaskClient.TaskClient(serviceRegistry), "statusPane", "notifications");
 			
 			var profile = new mProfile.Profile({
 				registry: serviceRegistry,