Index: trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 8156)
@@ -69,5 +69,4 @@
       imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.MonitorLarge);
       imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.NetworkCenterLarge);
-      progressView = new ProgressView(this);
     }
 
@@ -78,4 +77,7 @@
         currentProgress = new Progress();
         currentProgress.Status = "Downloading resources. Please be patient.";
+        if (progressView == null) {
+          progressView = new ProgressView(this);
+        }
         progressView.Progress = currentProgress;
       }
Index: trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 8156)
@@ -464,8 +464,8 @@
         Invoke(new EventHandler(Content_IsProgressingChanged), sender, e);
       } else {
-        if (Content != null && Content.IsProgressing) {
+        if (Content != null && Content.Progress != null && Content.IsProgressing) {
           SetProgressView();
         } else {
-          FinishProgressView();
+          progressView.Progress = null;
         }
       }
Index: trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 8156)
@@ -258,7 +258,6 @@
     private void UploadJob(RefreshableJob refreshableJob, CancellationToken cancellationToken) {
       try {
+        refreshableJob.IsProgressing = true;
         refreshableJob.Progress = new Progress("Connecting to server...");
-        refreshableJob.IsProgressing = true;
-
         IEnumerable<string> resourceNames = ToResourceNameList(refreshableJob.Job.ResourceNames);
         var resourceIds = new List<Guid>();
@@ -316,4 +315,5 @@
       }
       finally {
+        refreshableJob.Progress.Finish();
         refreshableJob.IsProgressing = false;
       }
@@ -427,8 +427,8 @@
     public static void LoadJob(RefreshableJob refreshableJob) {
       var hiveExperiment = refreshableJob.Job;
+      refreshableJob.IsProgressing = true;
       refreshableJob.Progress = new Progress();
 
       try {
-        refreshableJob.IsProgressing = true;
         int totalJobCount = 0;
         IEnumerable<LightweightTask> allTasks;
@@ -471,4 +471,5 @@
       }
       finally {
+        refreshableJob.Progress.Finish();
         refreshableJob.IsProgressing = false;
       }
Index: trunk/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs	(revision 8156)
@@ -31,8 +31,10 @@
 
 namespace HeuristicLab.Clients.Hive {
-  public class RefreshableJob : IHiveItem, IDeepCloneable, IContent, IProgressReporter, IComparable<RefreshableJob> {
+  public class RefreshableJob : IHiveItem, IDeepCloneable, IContent, IComparable<RefreshableJob> {
     private JobResultPoller jobResultPoller;
     private ConcurrentTaskDownloader<ItemTask> jobDownloader;
     private static object locker = new object();
+
+    public bool IsProgressing { get; set; }
 
     private Job job;
@@ -165,20 +167,13 @@
     }
 
-    private bool isProgressing;
-    public bool IsProgressing {
-      get { return isProgressing; }
-      set {
-        if (isProgressing != value) {
-          isProgressing = value;
-          OnIsProgressingChanged();
-        }
-      }
-    }
-
     private IProgress progress;
     public IProgress Progress {
       get { return progress; }
-      set { this.progress = value; }
-    }
+      set {
+        this.progress = value;
+        OnIsProgressingChanged();
+      }
+    }
+
 
     private ThreadSafeLog log;
@@ -229,5 +224,4 @@
 
     #region JobResultPoller Events
-
     public void StartResultPolling() {
       if (jobResultPoller == null) {
@@ -410,10 +404,4 @@
     }
 
-    public event EventHandler IsProgressingChanged;
-    protected virtual void OnIsProgressingChanged() {
-      var handler = IsProgressingChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
     public event EventHandler IsDownloadableChanged;
     private void OnIsDownloadableChanged() {
@@ -473,4 +461,9 @@
     protected virtual void OnTaskReceived() {
       var handler = TaskReceived;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler IsProgressingChanged;
+    private void OnIsProgressingChanged() {
+      var handler = IsProgressingChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
Index: trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/Views/ProgressView.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/Views/ProgressView.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.MainForm.WindowsForms/3.3/Views/ProgressView.cs	(revision 8156)
@@ -32,5 +32,5 @@
       set {
         if (progress == value) return;
-        DeregisterProgressEvents();
+        Finish();
         progress = value;
         RegisterProgressEvents();
@@ -50,16 +50,18 @@
 
     private void ShowProgress() {
-      this.Left = (parentView.ClientRectangle.Width / 2) - (this.Width / 2);
-      this.Top = (parentView.ClientRectangle.Height / 2) - (this.Height / 2);
-      this.Anchor = AnchorStyles.Left | AnchorStyles.Top;
+      if (progress != null) {
+        this.Left = (parentView.ClientRectangle.Width / 2) - (this.Width / 2);
+        this.Top = (parentView.ClientRectangle.Height / 2) - (this.Height / 2);
+        this.Anchor = AnchorStyles.Left | AnchorStyles.Top;
 
-      LockBackground();
+        LockBackground();
 
-      if (!parentView.Controls.Contains(this)) {
-        parentView.Controls.Add(this);
+        if (!parentView.Controls.Contains(this)) {
+          parentView.Controls.Add(this);
+        }
+
+        BringToFront();
+        Visible = true;
       }
-
-      BringToFront();
-      Visible = true;
     }
 
@@ -123,11 +125,13 @@
       if (InvokeRequired) Invoke((Action)UpdateProgressValue);
       else {
-        double progressValue = progress.ProgressValue;
-        if (progressValue < progressBar.Minimum || progressValue > progressBar.Maximum) {
-          progressBar.Style = ProgressBarStyle.Marquee;
-          progressBar.Value = progressBar.Minimum;
-        } else {
-          progressBar.Style = ProgressBarStyle.Blocks;
-          progressBar.Value = (int)Math.Round(progressBar.Minimum + progressValue * (progressBar.Maximum - progressBar.Minimum));
+        if (progress != null) {
+          double progressValue = progress.ProgressValue;
+          if (progressValue < progressBar.Minimum || progressValue > progressBar.Maximum) {
+            progressBar.Style = ProgressBarStyle.Marquee;
+            progressBar.Value = progressBar.Minimum;
+          } else {
+            progressBar.Style = ProgressBarStyle.Blocks;
+            progressBar.Value = (int)Math.Round(progressBar.Minimum + progressValue * (progressBar.Maximum - progressBar.Minimum));
+          }
         }
       }
@@ -137,6 +141,8 @@
       if (InvokeRequired) Invoke((Action)UpdateProgressStatus);
       else {
-        string status = progress.Status;
-        statusLabel.Text = progress.Status;
+        if (progress != null) {
+          string status = progress.Status;
+          statusLabel.Text = progress.Status;
+        }
       }
     }
Index: trunk/sources/HeuristicLab.MainForm/3.3/HeuristicLab.MainForm-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.3/HeuristicLab.MainForm-3.3.csproj	(revision 8155)
+++ trunk/sources/HeuristicLab.MainForm/3.3/HeuristicLab.MainForm-3.3.csproj	(revision 8156)
@@ -117,5 +117,4 @@
     <Compile Include="Interfaces\IConfigureableView.cs" />
     <Compile Include="Interfaces\IProgress.cs" />
-    <Compile Include="Interfaces\IProgressReporter.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Progress.cs" />
Index: trunk/sources/HeuristicLab.MainForm/3.3/Interfaces/IProgress.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.3/Interfaces/IProgress.cs	(revision 8155)
+++ trunk/sources/HeuristicLab.MainForm/3.3/Interfaces/IProgress.cs	(revision 8156)
@@ -30,12 +30,10 @@
     void SignalSuccessfulCancelation();
 
+    bool CancelRequested { get; set; }
+
     event EventHandler Finished;
     event EventHandler StatusChanged;
     event EventHandler ProgressValueChanged;
-
-    bool CancelRequested { get; set; }
     event EventHandler Canceled;
-
-
   }
 }
Index: trunk/sources/HeuristicLab.MainForm/3.3/Interfaces/IProgressReporter.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.3/Interfaces/IProgressReporter.cs	(revision 8155)
+++ 	(revision )
@@ -1,31 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-
-namespace HeuristicLab.MainForm {
-  public interface IProgressReporter {
-    IProgress Progress { get; }
-    bool IsProgressing { get; }
-
-    event EventHandler IsProgressingChanged;
-  }
-}
