Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs	(revision 1857)
@@ -35,17 +35,9 @@
 using HeuristicLab.Data;
 using HeuristicLab.Core;
+using HeuristicLab.Modeling;
 
 namespace HeuristicLab.CEDMA.Server {
   public abstract class DispatcherBase : IDispatcher {
-    public enum ModelComplexity { Low, Medium, High };
-    public enum Algorithm { StandardGpRegression, OffspringGpRegression, StandardGpClassification, OffspringGpClassification, StandardGpForecasting, OffspringGpForecasting };
-
     private IStore store;
-    private ModelComplexity[] possibleComplexities = new ModelComplexity[] { ModelComplexity.Low, ModelComplexity.Medium, ModelComplexity.High };
-    private Dictionary<LearningTask, Algorithm[]> possibleAlgorithms = new Dictionary<LearningTask, Algorithm[]>() {
-      {LearningTask.Classification, new Algorithm[] { Algorithm.StandardGpClassification, Algorithm.OffspringGpClassification }},
-      {LearningTask.Regression, new Algorithm[] { Algorithm.StandardGpRegression, Algorithm.OffspringGpRegression }},
-      {LearningTask.TimeSeries, new Algorithm[] { Algorithm.StandardGpForecasting, Algorithm.OffspringGpForecasting }}
-    };
 
     private static int MaxGenerations {
@@ -79,107 +71,39 @@
 
       int targetVariable = SelectTargetVariable(dataSet, dataSet.Problem.AllowedTargetVariables.ToArray());
-      Algorithm selectedAlgorithm = SelectAlgorithm(dataSet, targetVariable, possibleAlgorithms[dataSet.Problem.LearningTask]);
+      IAlgorithm selectedAlgorithm = SelectAlgorithm(dataSet, targetVariable, dataSet.Problem.LearningTask);
       string targetVariableName = dataSet.Problem.GetVariableName(targetVariable);
-      ModelComplexity selectedComplexity = SelectComplexity(dataSet, targetVariable, selectedAlgorithm, possibleComplexities);
 
-      Execution exec = CreateExecution(dataSet.Problem, targetVariable, selectedAlgorithm, selectedComplexity);
-      if (exec != null) {
+
+      if (selectedAlgorithm != null) {
+        Execution exec = CreateExecution(dataSet.Problem, targetVariable, selectedAlgorithm);
         exec.DataSetEntity = dataSetEntity;
         exec.TargetVariable = targetVariableName;
-      }
-      return exec;
+        return exec;
+      } else return null;
     }
 
     public abstract Entity SelectDataSet(Entity[] datasets);
     public abstract int SelectTargetVariable(DataSet dataSet, int[] targetVariables);
-    public abstract Algorithm SelectAlgorithm(DataSet dataSet, int targetVariable, Algorithm[] possibleAlgorithms);
-    public abstract ModelComplexity SelectComplexity(DataSet dataSet, int targetVariable, Algorithm algorithm, ModelComplexity[] possibleComplexities);
+    public abstract IAlgorithm SelectAlgorithm(DataSet dataSet, int targetVariable, LearningTask learningTask);
 
-    private Execution CreateExecution(Problem problem, int targetVariable, Algorithm algorithm, ModelComplexity complexity) {
-      switch (algorithm) {
-        case Algorithm.StandardGpRegression: {
-            var algo = new HeuristicLab.GP.StructureIdentification.StandardGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.PopulationSize = 10000;
-            algo.MaxGenerations = MaxGenerations;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "StandardGP - Complexity: " + complexity;
-            return exec;
-          }
-        case Algorithm.OffspringGpRegression: {
-            var algo = new HeuristicLab.GP.StructureIdentification.OffspringSelectionGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.MaxEvaluatedSolutions = MaxEvaluatedSolutions;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "OffspringGP - Complexity: " + complexity;
-            return exec;
-          }
-        case Algorithm.StandardGpClassification: {
-            var algo = new HeuristicLab.GP.StructureIdentification.Classification.StandardGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.PopulationSize = 10000;
-            algo.MaxGenerations = MaxGenerations;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "StandardGP - Complexity: " + complexity;
-            return exec;
-          }
-        case Algorithm.OffspringGpClassification: {
-            var algo = new HeuristicLab.GP.StructureIdentification.Classification.OffspringSelectionGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.MaxEvaluatedSolutions = MaxEvaluatedSolutions;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "OffspringGP - Complexity: " + complexity;
-            return exec;
-          }
-        case Algorithm.StandardGpForecasting: {
-            var algo = new HeuristicLab.GP.StructureIdentification.TimeSeries.StandardGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.PopulationSize = 10000;
-            algo.MaxGenerations = MaxGenerations;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "StandardGP - Complexity: " + complexity;
-            return exec;
-          }
-        case Algorithm.OffspringGpForecasting: {
-            var algo = new HeuristicLab.GP.StructureIdentification.TimeSeries.OffspringSelectionGP();
-            SetComplexityParameters(algo, complexity);
-            SetProblemParameters(algo, problem, targetVariable);
-            algo.MaxEvaluatedSolutions = MaxEvaluatedSolutions;
-            Execution exec = new Execution(algo.Engine);
-            exec.Description = "OffspringGP - Complexity: " + complexity;
-            return exec;
-          }
-        default: {
-            return null;
-          }
-      }
+    private Execution CreateExecution(Problem problem, int targetVariable, IAlgorithm algorithm) {
+      //switch (algorithm) {
+      //  case Algorithm.StandardGpRegression: {
+      //      var algo = new HeuristicLab.GP.StructureIdentification.StandardGP();
+      //      SetComplexityParameters(algo, complexity);
+      //      SetProblemParameters(algo, problem, targetVariable);
+      //      algo.PopulationSize = 10000;
+      //      algo.MaxGenerations = MaxGenerations;
+      //      Execution exec = new Execution(algo.Engine);
+      //      exec.Description = "StandardGP - Complexity: " + complexity;
+      //      return exec;
+      //    }
+      SetProblemParameters(algorithm, problem, targetVariable);
+      Execution exec = new Execution(algorithm.Engine);
+      exec.Description = algorithm.Name;
+      return exec;
     }
 
-    private void SetComplexityParameters(AlgorithmBase algo, ModelComplexity complexity) {
-      switch (complexity) {
-        case ModelComplexity.Low: {
-            algo.MaxTreeHeight = 5;
-            algo.MaxTreeSize = 20;
-            break;
-          }
-        case ModelComplexity.Medium: {
-            algo.MaxTreeHeight = 10;
-            algo.MaxTreeSize = 100;
-            break;
-          }
-        case ModelComplexity.High: {
-            algo.MaxTreeHeight = 12;
-            algo.MaxTreeSize = 200;
-            break;
-          }
-      }
-    }
-
-    private void SetProblemParameters(AlgorithmBase algo, Problem problem, int targetVariable) {
+    private void SetProblemParameters(IAlgorithm algo, Problem problem, int targetVariable) {
       algo.ProblemInjector.GetVariable("Dataset").Value = problem.DataSet;
       algo.ProblemInjector.GetVariable("TargetVariable").GetValue<IntData>().Data = targetVariable;
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 1856)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 1857)
@@ -132,19 +132,11 @@
       <Name>HeuristicLab.Data-3.2</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.GP.StructureIdentification.Classification\3.3\HeuristicLab.GP.StructureIdentification.Classification-3.3.csproj">
-      <Project>{7C20D100-8BEB-433A-9499-F075E2CB9297}</Project>
-      <Name>HeuristicLab.GP.StructureIdentification.Classification-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.GP.StructureIdentification.TimeSeries\3.3\HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.csproj">
-      <Project>{6084CFB5-733F-449D-9F92-2E40D13F0514}</Project>
-      <Name>HeuristicLab.GP.StructureIdentification.TimeSeries-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.GP.StructureIdentification\3.3\HeuristicLab.GP.StructureIdentification-3.3.csproj">
-      <Project>{74223A32-C726-4978-BE78-37113A18373C}</Project>
-      <Name>HeuristicLab.GP.StructureIdentification-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Grid\3.2\HeuristicLab.Grid-3.2.csproj">
       <Project>{545CE756-98D8-423B-AC2E-6E7D70926E5C}</Project>
       <Name>HeuristicLab.Grid-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Modeling\3.2\HeuristicLab.Modeling-3.2.csproj">
+      <Project>{80F7FADA-549D-4151-8856-79B620A50DBA}</Project>
+      <Name>HeuristicLab.Modeling-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.2\HeuristicLab.Operators-3.2.csproj">
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 1857)
@@ -34,7 +34,5 @@
   [Dependency(Dependency = "HeuristicLab.Data-3.2")]
   [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification.Classification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification.TimeSeries-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
   public class HeuristicLabCedmaServerPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/RandomDispatcher.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/RandomDispatcher.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/RandomDispatcher.cs	(revision 1857)
@@ -35,4 +35,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Core;
+using HeuristicLab.Modeling;
 
 namespace HeuristicLab.CEDMA.Server {
@@ -44,10 +45,25 @@
     }
 
-    public override Algorithm SelectAlgorithm(DataSet dataSet, int targetVariable, Algorithm[] possibleAlgorithms) {
-      return possibleAlgorithms[random.Next(possibleAlgorithms.Length)];
-    }
-
-    public override ModelComplexity SelectComplexity(DataSet dataSet, int targetVariable, Algorithm algorithm, ModelComplexity[] possibleComplexities) {
-      return possibleComplexities[random.Next(possibleComplexities.Length)];
+    public override IAlgorithm SelectAlgorithm(DataSet dataSet, int targetVariable, LearningTask learningTask) {
+      DiscoveryService ds = new DiscoveryService();
+      IAlgorithm[] algos = ds.GetInstances<IAlgorithm>();
+      switch (learningTask) {
+        case LearningTask.Regression: {
+            var regressionAlgos = algos.Where(a => (a as IClassificationAlgorithm) == null && (a as ITimeSeriesAlgorithm) == null);
+            if (regressionAlgos.Count() == 0) return null;
+            return regressionAlgos.ElementAt(random.Next(regressionAlgos.Count()));
+          }
+        case LearningTask.Classification: {
+            var classificationAlgos = algos.Where(a => (a as IClassificationAlgorithm) != null);
+            if (classificationAlgos.Count() == 0) return null;
+            return classificationAlgos.ElementAt(random.Next(classificationAlgos.Count()));
+          }
+        case LearningTask.TimeSeries: {
+            var timeSeriesAlgos = algos.Where(a => (a as ITimeSeriesAlgorithm) != null);
+            if (timeSeriesAlgos.Count() == 0) return null;
+            return timeSeriesAlgos.ElementAt(random.Next(timeSeriesAlgos.Count()));
+          }
+      }
+      return null;
     }
 
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs	(revision 1857)
@@ -33,5 +33,5 @@
 
 namespace HeuristicLab.GP.StructureIdentification.Classification {
-  public class OffspringSelectionGP : HeuristicLab.GP.StructureIdentification.OffspringSelectionGP {
+  public class OffspringSelectionGP : HeuristicLab.GP.StructureIdentification.OffspringSelectionGP, IClassificationAlgorithm {
     protected override IOperator CreateProblemInjector() {
       return new ProblemInjector();
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs	(revision 1857)
@@ -34,6 +34,5 @@
 
 namespace HeuristicLab.GP.StructureIdentification.Classification {
-  public class StandardGP : HeuristicLab.GP.StructureIdentification.StandardGP {
-
+  public class StandardGP : HeuristicLab.GP.StructureIdentification.StandardGP, IClassificationAlgorithm {
     protected override IOperator CreateProblemInjector() {
       return new ProblemInjector();
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs	(revision 1857)
@@ -34,5 +34,5 @@
 
 namespace HeuristicLab.GP.StructureIdentification.TimeSeries {
-  public class OffspringSelectionGP : HeuristicLab.GP.StructureIdentification.OffspringSelectionGP {
+  public class OffspringSelectionGP : HeuristicLab.GP.StructureIdentification.OffspringSelectionGP, ITimeSeriesAlgorithm {
     public virtual bool Autoregressive {
       get { return ProblemInjector.GetVariable("Autoregressive").GetValue<BoolData>().Data; }
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs	(revision 1857)
@@ -34,5 +34,5 @@
 
 namespace HeuristicLab.GP.StructureIdentification.TimeSeries {
-  public class StandardGP : HeuristicLab.GP.StructureIdentification.StandardGP {
+  public class StandardGP : HeuristicLab.GP.StructureIdentification.StandardGP, ITimeSeriesAlgorithm {
     public bool Autoregressive {
       get { return ProblemInjector.GetVariable("Autoregressive").GetValue<BoolData>().Data; }
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs	(revision 1857)
@@ -35,7 +35,11 @@
 using HeuristicLab.Operators.Programmable;
 using HeuristicLab.Evolutionary;
+using HeuristicLab.Modeling;
 
 namespace HeuristicLab.GP.StructureIdentification {
-  public abstract class AlgorithmBase : ItemBase {
+  public abstract class AlgorithmBase : ItemBase, IAlgorithm, IStochasticAlgorithm {
+    public virtual string Name { get { return "GP"; } }
+    public virtual string Description { get { return "TODO"; } }
+
     public virtual double MutationRate {
       get { return GetVariableInjector().GetVariable("MutationRate").GetValue<DoubleData>().Data; }
@@ -52,5 +56,5 @@
     }
 
-    public virtual int Seed {
+    public virtual int RandomSeed {
       get { return GetRandomInjector().GetVariable("Seed").GetValue<IntData>().Data; }
       set { GetRandomInjector().GetVariable("Seed").GetValue<IntData>().Data = value; }
@@ -430,4 +434,5 @@
     }
     #endregion
+
   }
 }
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGP.cs	(revision 1857)
@@ -39,4 +39,5 @@
 namespace HeuristicLab.GP.StructureIdentification {
   public class OffspringSelectionGP : StandardGP {
+    public override string Name { get { return "OffspringSelectionGP"; } }
 
     public virtual int MaxEvaluatedSolutions {
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 1857)
@@ -38,4 +38,6 @@
 namespace HeuristicLab.GP.StructureIdentification {
   public class StandardGP : AlgorithmBase, IEditable {
+
+    public override string Name { get { return "StandardGP"; } }
 
     public virtual int MaxGenerations {
Index: /trunk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj	(revision 1856)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj	(revision 1857)
@@ -83,5 +83,9 @@
   <ItemGroup>
     <Compile Include="ClassificationProblemInjector.cs" />
+    <Compile Include="ITimeSeriesAlgorithm.cs" />
+    <Compile Include="IClassificationAlgorithm.cs" />
+    <Compile Include="IStochasticAlgorithm.cs" />
     <Compile Include="HeuristicLabModelingPlugin.cs" />
+    <Compile Include="IAlgorithm.cs" />
     <Compile Include="ProblemInjector.cs" />
     <Compile Include="ProblemInjectorView.cs">
Index: unk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling.csproj	(revision 1856)
+++ 	(revision )
@@ -1,108 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{80F7FADA-549D-4151-8856-79B620A50DBA}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Modeling</RootNamespace>
-    <AssemblyName>HeuristicLab.Modeling-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="HeuristicLabModelingPlugin.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-</Project>
Index: /trunk/sources/HeuristicLab.Modeling/3.2/IAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/IAlgorithm.cs	(revision 1857)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/IAlgorithm.cs	(revision 1857)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Modeling {
+  public interface IAlgorithm {
+    string Name { get; }
+    string Description { get; }
+    IOperator ProblemInjector { get; set; }
+    IEngine Engine { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Modeling/3.2/IClassificationAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/IClassificationAlgorithm.cs	(revision 1857)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/IClassificationAlgorithm.cs	(revision 1857)
@@ -0,0 +1,30 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Modeling {
+  public interface IClassificationAlgorithm : IAlgorithm {
+  }
+}
Index: /trunk/sources/HeuristicLab.Modeling/3.2/IStochasticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/IStochasticAlgorithm.cs	(revision 1857)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/IStochasticAlgorithm.cs	(revision 1857)
@@ -0,0 +1,31 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Modeling {
+  public interface IStochasticAlgorithm : IAlgorithm {
+    int RandomSeed { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Modeling/3.2/ITimeSeriesAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/ITimeSeriesAlgorithm.cs	(revision 1857)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/ITimeSeriesAlgorithm.cs	(revision 1857)
@@ -0,0 +1,30 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Modeling {
+  public interface ITimeSeriesAlgorithm : IAlgorithm {
+  }
+}
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLab.SupportVectorMachines-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLab.SupportVectorMachines-3.2.csproj	(revision 1856)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLab.SupportVectorMachines-3.2.csproj	(revision 1857)
@@ -109,11 +109,11 @@
       <Name>HeuristicLab.Data-3.2</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.GP.StructureIdentification\3.3\HeuristicLab.GP.StructureIdentification-3.3.csproj">
-      <Project>{74223A32-C726-4978-BE78-37113A18373C}</Project>
-      <Name>HeuristicLab.GP.StructureIdentification-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Logging\3.2\HeuristicLab.Logging-3.2.csproj">
       <Project>{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}</Project>
       <Name>HeuristicLab.Logging-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Modeling\3.2\HeuristicLab.Modeling-3.2.csproj">
+      <Project>{80F7FADA-549D-4151-8856-79B620A50DBA}</Project>
+      <Name>HeuristicLab.Modeling-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators.Programmable\3.2\HeuristicLab.Operators.Programmable-3.2.csproj">
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs	(revision 1857)
@@ -33,5 +33,5 @@
   [Dependency(Dependency = "HeuristicLab.Data-3.2")]
   [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
   [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
   [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs	(revision 1856)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs	(revision 1857)
@@ -33,7 +33,12 @@
 using HeuristicLab.Logging;
 using HeuristicLab.Operators.Programmable;
+using HeuristicLab.Modeling;
 
 namespace HeuristicLab.SupportVectorMachines {
-  public class SupportVectorRegression : ItemBase, IEditable {
+  public class SupportVectorRegression : ItemBase, IEditable, IAlgorithm {
+
+    public string Name { get { return "SupportVectorRegression"; } }
+    public string Description { get { return "TODO"; } }
+
     private SequentialEngine.SequentialEngine engine;
     public IEngine Engine {
