Index: branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs
===================================================================
--- branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs	(revision 16314)
+++ branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs	(revision 16317)
@@ -163,10 +163,15 @@
       }
 
-      if (content.ProgressBarMode == ProgressBarMode.Continuous) {
-        progressBar.Style = ProgressBarStyle.Continuous;
-        progressBar.Value = (int)Math.Round(progressBar.Minimum + content.ProgressValue * (progressBar.Maximum - progressBar.Minimum));
-      } else {
-        progressBar.Style = ProgressBarStyle.Marquee;
-        progressBar.Value = 0;
+      switch (content.ProgressMode) {
+        case ProgressMode.Determinate:
+          progressBar.Style = ProgressBarStyle.Continuous;
+          progressBar.Value = (int)Math.Round(progressBar.Minimum + content.ProgressValue * (progressBar.Maximum - progressBar.Minimum));
+          break;
+        case ProgressMode.Indeterminate:
+          progressBar.Style = ProgressBarStyle.Marquee;
+          progressBar.Value = 0;
+          break;
+        default:
+          throw new NotImplementedException($"Invalid Progress Mode: {content.ProgressMode}");
       }
     }
Index: branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs
===================================================================
--- branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 16314)
+++ branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 16317)
@@ -381,7 +381,7 @@
     /// Adds a <see cref="ProgressView"/> to the specified view.
     /// </summary>
-    internal void AddProgressToView(Control control, IProgress progress) {
+    internal void AddProgressToControl(Control control, IProgress progress) {
       if (InvokeRequired) {
-        Invoke((Action<Control, IProgress>)AddProgressToView, control, progress);
+        Invoke((Action<Control, IProgress>)AddProgressToControl, control, progress);
         return;
       }
@@ -426,7 +426,7 @@
     /// Removes an existing <see cref="ProgressView"/> from the specified view.
     /// </summary>
-    internal void RemoveProgressFromView(Control control, bool finishProgress = true) {
+    internal void RemoveProgressFromControl(Control control, bool finishProgress = true) {
       if (InvokeRequired) {
-        Invoke((Action<Control, bool>)RemoveProgressFromView, control, finishProgress);
+        Invoke((Action<Control, bool>)RemoveProgressFromControl, control, finishProgress);
         return;
       }
Index: branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Progress.cs
===================================================================
--- branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Progress.cs	(revision 16314)
+++ branches/2845_EnhancedProgress/HeuristicLab.MainForm.WindowsForms/3.3/Progress.cs	(revision 16317)
@@ -48,10 +48,10 @@
     }
 
-    private ProgressBarMode progressBarMode;
-    public ProgressBarMode ProgressBarMode {
-      get { return progressBarMode; }
-      set {
-        if (progressBarMode != value) {
-          progressBarMode = value;
+    private ProgressMode progressMode;
+    public ProgressMode ProgressMode {
+      get { return progressMode; }
+      set {
+        if (progressMode != value) {
+          progressMode = value;
           OnProgressBarModeChanged();
         }
@@ -63,6 +63,6 @@
       get { return progressValue; }
       set {
-        if (progressBarMode == ProgressBarMode.Marquee)
-          throw new InvalidOperationException("Cannot set ProgressValue while ProgressBar is in Marquee-Mode");
+        if (progressMode == ProgressMode.Indeterminate)
+          throw new InvalidOperationException("Cannot set ProgressValue while ProgressBar is in Indeterminate-Mode");
         if (progressValue != value) {
           progressValue = Math.Max(Math.Min(value, 1.0), 0.0);
@@ -98,22 +98,18 @@
       canBeStopped = false;
       canBeCanceled = false;
-      progressBarMode = ProgressBarMode.Marquee;
+      progressMode = ProgressMode.Indeterminate;
       progressValue = 0.0;
     }
 
-    public void Start(string message, double progressValue = 0) {
+    public void Start(string message, ProgressMode mode = ProgressMode.Determinate) {
       ProgressState = ProgressState.Started;
-      ProgressBarMode = ProgressBarMode.Continuous;
-      ProgressValue = progressValue;
+      ProgressMode = mode;
+      if (mode == ProgressMode.Determinate)
+        ProgressValue = 0.0;
       Message = message;
     }
-    public void StartMarquee(string message) {
-      ProgressState = ProgressState.Started;
-      ProgressBarMode = ProgressBarMode.Marquee;
-      Message = message;
-    }
 
     public void Finish() {
-      if (ProgressBarMode == ProgressBarMode.Continuous && ProgressValue != 1.0)
+      if (ProgressMode == ProgressMode.Determinate && ProgressValue != 1.0)
         ProgressValue = 1.0;
       ProgressState = ProgressState.Finished;
@@ -135,38 +131,30 @@
     #region Show/Hide Progress
     /// <summary>
-    /// Shows a started Progress in Continuous-mode on all Views of the specified content.
-    /// </summary>
-    public static IProgress Show(IContent content, string progressMessage, double initialProgressValue = 0, bool addToObjectGraphObjects = true) {
+    /// Shows a started Progress on all Views of the specified content.
+    /// </summary>
+    public static IProgress Show(IContent content, string progressMessage, ProgressMode mode = ProgressMode.Determinate, bool addToObjectGraphObjects = true) {
       var progress = new Progress();
-      progress.Start(progressMessage, initialProgressValue);
+      progress.Start(progressMessage, mode);
       AddProgressToContent(content, progress, addToObjectGraphObjects);
       return progress;
     }
-    /// <summary>
-    /// Shows a started Progress in Marquee-mode on all Views of the specified content.
-    /// </summary>
-    public static IProgress ShowMarquee(IContent content, string progressMessage, bool addToObjectGraphObjects = true) {
+
+    /// <summary>
+    /// Shows a started Progress on the specified view.
+    /// </summary>
+    public static IProgress Show(IView view, string progressMessage, ProgressMode mode = ProgressMode.Determinate) {
       var progress = new Progress();
-      progress.StartMarquee(progressMessage);
-      AddProgressToContent(content, progress, addToObjectGraphObjects);
-      return progress;
-    }
-
-    /// <summary>
-    /// Shows a started Progress in Continuous-mode on the specified view.
-    /// </summary>
-    public static IProgress Show(Control control, string progressMessage, double initialProgressValue = 0) {
+      progress.Start(progressMessage, mode);
+      AddProgressToView(view, progress);
+      return progress;
+    }
+    /// <summary>
+    /// Shows a started Progress on the specified control.
+    /// </summary>
+    /// <remarks>Use Progress.Show(IView, ...) if possible.</remarks>
+    public static IProgress ShowOnControl(Control control, string progressMessage, ProgressMode mode = ProgressMode.Determinate) {
       var progress = new Progress();
-      progress.Start(progressMessage, initialProgressValue);
-      AddProgressToView(control, progress);
-      return progress;
-    }
-    /// <summary>
-    /// Shows a started Progress in Marquee-mode on the specified view.
-    /// </summary>
-    public static IProgress ShowMarquee(Control control, string progressMessage) {
-      var progress = new Progress();
-      progress.StartMarquee(progressMessage);
-      AddProgressToView(control, progress);
+      progress.Start(progressMessage, mode);
+      AddProgressToControl(control, progress);
       return progress;
     }
@@ -181,16 +169,27 @@
     /// Hides the Progress from the specified view.
     /// </summary>
-    public static void Hide(Control control) {
-      RemoveProgressFromView(control);
+    public static void Hide(IView view) {
+      RemoveProgressFromView(view);
+    }
+    /// <summary>
+    /// Hides the Progress from the specified control.
+    /// </summary>
+    /// <remarks>Use Progress.Hide(IView) if possible.</remarks>
+    public static void HideFromControl(Control control) {
+      RemoveProgressFromControl(control);
     }
     #endregion
 
-    #region Interface to from MainForm
+    #region Interface to MainForm
     public static IProgress AddProgressToContent(IContent content, IProgress progress, bool addToObjectGraphObjects = true) {
       MainFormManager.GetMainForm<WindowsForms.MainForm>().AddProgressToContent(content, progress, addToObjectGraphObjects);
       return progress;
     }
-    public static IProgress AddProgressToView(Control control, IProgress progress) {
-      MainFormManager.GetMainForm<WindowsForms.MainForm>().AddProgressToView(control, progress);
+    public static IProgress AddProgressToView(IView view, IProgress progress) {
+      //return AddProgressToControl(MainFormManager.GetMainForm<WindowsForms.MainForm>().GetForm(view), progress);
+      return AddProgressToControl((Control)view, progress);
+    }
+    public static IProgress AddProgressToControl(Control control, IProgress progress) {
+      MainFormManager.GetMainForm<WindowsForms.MainForm>().AddProgressToControl(control, progress);
       return progress;
     }
@@ -199,6 +198,10 @@
       MainFormManager.GetMainForm<WindowsForms.MainForm>().RemoveProgressFromContent(content, finishProgress);
     }
-    public static void RemoveProgressFromView(Control control, bool finishProgress = true) {
-      MainFormManager.GetMainForm<WindowsForms.MainForm>().RemoveProgressFromView(control, finishProgress);
+    public static void RemoveProgressFromView(IView view, bool finishProgress = true) {
+      //RemoveProgressFromControl(MainFormManager.GetMainForm<WindowsForms.MainForm>().GetForm(view), finishProgress);
+      RemoveProgressFromControl((Control)view, finishProgress);
+    }
+    public static void RemoveProgressFromControl(Control control, bool finishProgress = true) {
+      MainFormManager.GetMainForm<WindowsForms.MainForm>().RemoveProgressFromControl(control, finishProgress);
     }
     #endregion
