Index: branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs
===================================================================
--- branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs	(revision 9166)
+++ branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs	(revision 9215)
@@ -3,4 +3,5 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.Services.Optimization.ControllerService.Model;
 
 namespace HeuristicLab.Services.Optimization.ControllerService.Interfaces {
@@ -17,4 +18,11 @@
   }
 
+  public interface IExperimentDao {
+    bool Add(string username, Experiment experiment);
+    bool DeleteByName(string username, string experiment);
+    Experiment FindByName(string username, string experiment);
+    IEnumerable<Experiment> GetExperiments(string user);
+  }
+
   public interface IBlobDao {
     bool Add(StringEntry entry);
@@ -24,6 +32,7 @@
 
   public interface IDataAccessLayer {
-    IScenarioDao CreateScenarioDao();
-    IBlobDao CreateBlobDao();
+    IScenarioDao ScenarioDao { get; }
+    IBlobDao BlobDao { get; }
+    IExperimentDao ExperimentDao { get; }    
   }
 
Index: branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IControllerService.cs
===================================================================
--- branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IControllerService.cs	(revision 9166)
+++ branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IControllerService.cs	(revision 9215)
@@ -20,5 +20,5 @@
 
     [OperationContract]
-    void ScheduleOptimizationScenario(User user, OptimizationScenario scenario, JobExecutionDetails details);
+    bool ScheduleOptimizationScenario(User user, OptimizationScenario scenario, JobExecutionDetails details);
 
     [OperationContract]
@@ -29,5 +29,5 @@
 
     [OperationContract]
-    void DeleteJob(User user, string id);
+    bool DeleteJob(User user, string id);
 
     [OperationContract]
@@ -39,4 +39,19 @@
     [OperationContract]
     bool DeleteHiveScenario(User user, string scenarioName);
+
+    [OperationContract]
+    bool SaveExperiment(User user, Experiment experiment);
+
+    [OperationContract]
+    IEnumerable<string> GetExperiments(User user);
+
+    [OperationContract]
+    bool DeleteExperiment(User user, string experiment);
+
+    [OperationContract]
+    Job GetTasks(User u, string jobId);
+
+    [OperationContract]
+    Task GetTaskData(User u, string jobId, string taskId);
   }
 }
Index: branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IScenarioManager.cs
===================================================================
--- branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IScenarioManager.cs	(revision 9166)
+++ branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IScenarioManager.cs	(revision 9215)
@@ -7,11 +7,18 @@
 namespace HeuristicLab.Services.Optimization.ControllerService.Interfaces {
   public interface IScenarioManager {
-    void DispatchScenario(User user, OptimizationScenario scenario, JobExecutionDetails details);
+    string DispatchScenario(User user, OptimizationScenario scenario, JobExecutionDetails details);
     IList<Job> GetJobs(User user);
     Job GetJob(User user, string id);
-    void DeleteJob(User user, string id);
+    bool DeleteJob(User user, string id);
     IList<Model.Run> GetJobResults(User user, string id);
     bool AddScenario(User user, string scenarioName, string scenarioXml, string scenarioMapper);
     bool DeleteScenario(User user, string scenarioName);
+
+    bool SaveExperiment(User user, Experiment experiment);
+    IEnumerable<string> GetExperiments(User user);
+    bool DeleteExperiment(User user, string experiment);
+
+    Task GetTaskData(User u, string jobId, string taskId);
+    Job GetTasks(User u, string jobId);
   }
 }
Index: branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs
===================================================================
--- branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs	(revision 9166)
+++ branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs	(revision 9215)
@@ -306,4 +306,7 @@
   public class Experiment {
     [DataMember]
+    public string Name { get; set; }
+
+    [DataMember]
     public IList<OptimizationScenario> Scenarios { get; set; }
 
@@ -340,4 +343,88 @@
 
   [DataContract]
+  public class Property {
+    [DataMember]
+    public string Key { get; set; }
+    [DataMember]
+    public string Value { get; set; }
+  }
+  
+  [DataContract]
+  public class General {
+    [DataMember]
+    public string Name { get { return GetValue("Name"); } set { SetValue("Name", value); } }
+    [DataMember]
+    public string Id { get { return GetValue("Id"); } set { SetValue("Id", value); } }
+    [DataMember]
+    public string Priority { get { return GetValue("Priority"); } set { SetValue("Priority", value); } }
+    [DataMember]
+    public string LastChanged { get { return GetValue("LastChanged"); } set { SetValue("LastChanged", value); } }
+
+    
+    private IList<Property> properties = new List<Property>();
+    [DataMember]
+	  public IList<Property> Properties
+	  {
+		  get { 
+        if (properties == null) 
+          properties = new List<Property>();
+        return properties;
+      }
+		  set { properties = value;}
+	  }
+
+    private string GetValue(string key) {      
+      return (from p in Properties where p.Key == key select p.Value).FirstOrDefault();
+    }
+
+    private void SetValue(string key, string value) {
+      var prop = (from p in Properties where p.Key == key select p).FirstOrDefault();
+      if (prop == null) {
+        prop = new Property();
+        Properties.Add(prop);
+      }
+      prop.Key = key;
+      prop.Value = value;
+    }
+  }
+
+  [DataContract]
+  public class TaskState {
+    [DataMember]
+    public string State { get; set; }
+    [DataMember]
+    public string ExecutionTime { get; set; }
+    [DataMember]
+    public string DateCreated { get; set; }
+    [DataMember]
+    public string DateFinished { get; set; }
+  }
+
+  [DataContract]
+  public class Task {
+    private General general = new General();
+    [DataMember]
+    public General General {
+      get { return general; }
+      set { general = value; }
+    }
+
+    private IList<Task> tasks = new List<Task>();
+    [DataMember]
+    public IList<Task> Children {
+      get { return tasks; }
+      set { tasks = value; }
+    }
+    
+    private TaskState state = new TaskState();
+
+    [DataMember]
+    public TaskState State {
+      get { return state; }
+      set { state = value; }
+    }
+  }
+
+  [DataContract]
   public class Job {
     [DataMember]
@@ -355,4 +442,13 @@
     [DataMember]
     public DateTime DateCreated { get; set; }
+
+    private IList<Task> tasks = new List<Task>();
+
+    [DataMember]
+    public IList<Task> Tasks {
+      get { return tasks; }
+      set { tasks = value; }
+    }
+
   }
 
