Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/ArgumentHandling.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/ArgumentHandling.cs	(revision 8632)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/ArgumentHandling.cs	(revision 8677)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -26,17 +27,20 @@
 namespace HeuristicLab.PluginInfrastructure {
   public static class ArgumentHandling {
-    public const string StartToken = "start";
-
     public static IArgument[] GetArguments(string[] args) {
       var arguments = new HashSet<IArgument>();
+      var exceptions = new List<Exception>();
+
       foreach (var entry in args) {
         var argument = ParseArgument(entry);
         if (argument != null && argument.Valid) arguments.Add(argument);
+        else exceptions.Add(new ArgumentException(string.Format("The argument \"{0}\" is invalid.", entry)));
       }
+
+      if (exceptions.Any()) throw new AggregateException("One or more arguments are invalid.", exceptions);
       return arguments.ToArray();
     }
 
     private static Argument ParseArgument(string entry) {
-      var regex = new Regex("^/[a-z]+(:[A-Za-z0-9 ]+)?$");
+      var regex = new Regex(@"^/[a-z]+(:[A-Za-z0-9\s]+)?$");
       if (!regex.IsMatch(entry)) return null;
       entry = entry.Remove(0, 1);
@@ -44,8 +48,5 @@
       string key = parts[0];
       string value = parts.Length == 2 ? parts[1].Trim() : string.Empty;
-      switch (key) {
-        case StartToken: return new StartArgument(value);
-        default: return null;
-      }
+      return new Argument(key.ToLower(), value);
     }
   }
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/Arguments.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/Arguments.cs	(revision 8632)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/Arguments.cs	(revision 8677)
@@ -21,15 +21,20 @@
 
 namespace HeuristicLab.PluginInfrastructure {
-  public abstract class Argument : IArgument {
+  public class Argument : IArgument {
+    public const string START = "start";
+
+    public string Token { get; private set; }
     public string Value { get; private set; }
-    public abstract bool Valid { get; }
+    public bool Valid { get { return !string.IsNullOrEmpty(Value); } }
 
-    protected Argument(string value) {
-      this.Value = value;
+    public Argument(string token, string value) {
+      Token = token;
+      Value = value;
     }
 
     public override bool Equals(object obj) {
       if (obj == null || this.GetType() != obj.GetType()) return false;
-      return this.Value == ((Argument)obj).Value;
+      var other = (Argument)obj;
+      return this.Token == other.Token && this.Value == other.Value;
     }
 
@@ -38,11 +43,3 @@
     }
   }
-
-  public class StartArgument : Argument {
-    public override bool Valid {
-      get { return !string.IsNullOrEmpty(Value); }
-    }
-
-    public StartArgument(string value) : base(value) { }
-  }
 }
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/IArgument.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/IArgument.cs	(revision 8632)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/ArgumentHandling/IArgument.cs	(revision 8677)
@@ -22,4 +22,5 @@
 namespace HeuristicLab.PluginInfrastructure {
   public interface IArgument {
+    string Token { get; }
     string Value { get; }
     bool Valid { get; }
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 8632)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Starter/StarterForm.cs	(revision 8677)
@@ -111,23 +111,4 @@
 
     /// <summary>
-    /// Creates a new StarterForm and tries to start application with <paramref name="appName"/> immediately.
-    /// </summary>
-    /// <param name="appName">Name of the application</param>
-    public StarterForm(string appName)
-      : this() {
-      var appDesc = (from desc in pluginManager.Applications
-                     where desc.Name == appName
-                     select desc).SingleOrDefault();
-      if (appDesc != null) {
-        StartApplication(appDesc);
-      } else {
-        MessageBox.Show("Cannot start application " + appName + ".",
-                        "HeuristicLab",
-                        MessageBoxButtons.OK,
-                        MessageBoxIcon.Warning);
-      }
-    }
-
-    /// <summary>
     /// Creates a new StarterForm and passes the arguments in <paramref name="args"/>.
     /// </summary>
@@ -139,18 +120,23 @@
 
     private void StarterForm_Shown(object sender, EventArgs e) {
-      foreach (var argument in ArgumentHandling.GetArguments(arguments)) {
-        if (argument is StartArgument) {
-          var appDesc = (from desc in pluginManager.Applications
-                         where desc.Name == argument.Value
-                         select desc).SingleOrDefault();
-          if (appDesc != null) {
-            StartApplication(appDesc);
-          } else {
-            MessageBox.Show("Cannot start application " + argument.Value + ".",
-                            "HeuristicLab",
-                            MessageBoxButtons.OK,
-                            MessageBoxIcon.Warning);
-          }
-        }
+      try {
+        foreach (var argument in ArgumentHandling.GetArguments(arguments)) {
+          if (argument.Token == Argument.START) {
+            var appDesc = (from desc in pluginManager.Applications
+                           where desc.Name == argument.Value
+                           select desc).SingleOrDefault();
+            if (appDesc != null) {
+              StartApplication(appDesc);
+            } else {
+              MessageBox.Show("Cannot start application " + argument.Value + ".",
+                              "HeuristicLab",
+                              MessageBoxButtons.OK,
+                              MessageBoxIcon.Warning);
+            }
+          }
+        }
+      }
+      catch (AggregateException ex) {
+        ErrorHandling.ShowErrorDialog(this, "One or more errors occurred while initializing the application.", ex);
       }
     }
