Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HL/HiveScenarioManager.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HL/HiveScenarioManager.cs	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HL/HiveScenarioManager.cs	(revision 9350)
@@ -21,8 +21,8 @@
 using System.Data;
 using HeuristicLab.Services.Optimization.ControllerService.General;
+using HeuristicLab.Services.Optimization.ControllerService.Parameters.HL;
 
 namespace HeuristicLab.Services.Optimization.ControllerService {
-  public class ScenarioEntity : TableServiceEntity {
-
+  public class ScenarioEntity : TableServiceEntity {    
     public ScenarioEntity() {
     }
@@ -41,4 +41,5 @@
 
   public class HiveScenarioManager : IScenarioManager {
+    private static HLParameterMapper parameterMapper = new HLParameterMapper();
     private static IScenarioMapper tspMapper;
     private static object lockable;
@@ -297,7 +298,16 @@
               var value = run.Results[key];              
               Parameter result = MapHiveDataType(key, value);
-              resultValues.Add(result);
+              resultValues.Add(result);              
             }
             taskRun.Results = resultValues;
+            IList<Parameter> inputParameters = new List<Model.Parameter>();
+            foreach (var key in run.Parameters.Keys) {
+              var value = run.Parameters[key];
+              Parameter param = MapHiveDataType(key, value);
+              inputParameters.Add(param);
+            }
+            // crawl the copied experiment of the job
+            //taskRun.Experiment = dal.JobDao.FindByJobId(id);
+            taskRun.InputParameters = inputParameters;
             runs.Add(taskRun);
           }
@@ -310,5 +320,10 @@
     
     private Parameter MapHiveDataType(string name, IItem item) {
-      Parameter result = new Parameter();
+
+      if (parameterMapper.IsHandlerAvailable(item)) {
+        return parameterMapper.Map(name, item);
+      }
+
+      var result = new Parameter();
       result.Type = ParameterType.String;
       //TODO: How shall we handle dll specific datatypes?      
@@ -349,5 +364,6 @@
             matrixValue[i][j] = matrix[j, i];
           }
-        }        
+        }
+        matrixValue = transpose(matrixValue);
         result.Value = new HeuristicLab.Services.Optimization.ControllerService.Model.DecimalMatrix() { Name = name, Value = matrixValue, RowNames = (matrix.ColumnNames.Count() > 0 ? matrix.ColumnNames.ToArray() : null) };
       }
@@ -408,5 +424,5 @@
       }
       else {
-        result.Value = new HeuristicLab.Services.Optimization.ControllerService.Model.StringValue() { Name = name, Value = "Cannot be displayed as string" };
+        result.Value = new HeuristicLab.Services.Optimization.ControllerService.Model.StringValue() { Name = name, Value = item.ItemName != null ? item.ItemName + " (Cannot be displayed properly as string)" : "Cannot be displayed properly as string" };
       }
       // TODO: Add workaround for TSP
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HeuristicLab.Services.Optimization.ControllerService.csproj
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HeuristicLab.Services.Optimization.ControllerService.csproj	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/HeuristicLab.Services.Optimization.ControllerService.csproj	(revision 9350)
@@ -179,4 +179,8 @@
     <Compile Include="Mockup\MockupDAL.cs" />
     <Compile Include="Mockup\MockupScenarioManager.cs" />
+    <Compile Include="Parameters\HL\HLParameterHandler.cs" />
+    <Compile Include="Parameters\HL\PathTSPParameterHandler.cs" />
+    <Compile Include="Parameters\HL\PermutationTypeHandler.cs" />
+    <Compile Include="Parameters\ParameterHandler.cs" />
     <Compile Include="Parsers\AlgorithmConverter.cs" />
     <Compile Include="PlaceholderControllerService.cs" />
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/DAL.cs	(revision 9350)
@@ -39,5 +39,5 @@
     IScenarioDao ScenarioDao { get; }
     IBlobDao BlobDao { get; }
-    IExperimentDao ExperimentDao { get; }    
+    IExperimentDao ExperimentDao { get; }
   }
 
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/Model/ControllerModel.cs	(revision 9350)
@@ -480,4 +480,7 @@
     [DataMember]
     public IList<Parameter> Results { get; set; }
+
+    [DataMember]
+    public IList<Parameter> InputParameters { get; set; }
   }
 
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Mockup/MockupDAL.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Mockup/MockupDAL.cs	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Mockup/MockupDAL.cs	(revision 9350)
@@ -253,5 +253,4 @@
       }      
     }
-
   }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/HLParameterHandler.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/HLParameterHandler.cs	(revision 9350)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/HLParameterHandler.cs	(revision 9350)
@@ -0,0 +1,15 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Services.Optimization.ControllerService.Parameters.HL {
+  public class HLParameterMapper : ParameterMapper<IItem> {
+    public HLParameterMapper() {
+      // register your hl specific datatype handlers here
+      Register(new PathTSPParameterHandler());
+      Register(new PermutationTypeHandler());
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PathTSPParameterHandler.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PathTSPParameterHandler.cs	(revision 9350)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PathTSPParameterHandler.cs	(revision 9350)
@@ -0,0 +1,33 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Problems.TravelingSalesman;
+
+namespace HeuristicLab.Services.Optimization.ControllerService.Parameters.HL {
+  public class PathTSPParameterHandler : IParameterHandler<IItem> {
+    public Type HandledType {
+      get {
+        return typeof(PathTSPTour);
+      }
+    }
+
+    public Model.Parameter Map(IItem item) {
+      var tour = item as PathTSPTour;
+      var parameter = new Model.Parameter();
+      var resultMatrix = new Model.DecimalMatrix();
+      // simply create a matrix which contains all the coordinates in correct order
+      // the client may now display them as table
+      double[][] matrix = new double[tour.Permutation.Length][];
+      
+      for (var i=0; i < tour.Permutation.Length; i++) {
+        matrix[i] = new double[2];
+        matrix[i][0] = tour.Coordinates[tour.Permutation[i], 0];
+        matrix[i][1] = tour.Coordinates[tour.Permutation[i], 1];
+      }
+      parameter.Value = new Model.DecimalMatrix() { Value = matrix };
+      return parameter;
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PermutationTypeHandler.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PermutationTypeHandler.cs	(revision 9350)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/HL/PermutationTypeHandler.cs	(revision 9350)
@@ -0,0 +1,21 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Services.Optimization.ControllerService.Parameters.HL {
+  public class PermutationTypeHandler : IParameterHandler<IItem> {
+    public Type HandledType {
+      get { return typeof(PermutationType); }
+    }
+
+    public Model.Parameter Map(IItem item) {
+      var permType = item as PermutationType;
+      return  new Model.Parameter() {
+        Value = new Model.StringValue() { Value = permType.Value.ToString() }
+      };
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/ParameterHandler.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/ParameterHandler.cs	(revision 9350)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parameters/ParameterHandler.cs	(revision 9350)
@@ -0,0 +1,46 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Services.Optimization.ControllerService.Model;
+
+namespace HeuristicLab.Services.Optimization.ControllerService.Parameters {
+  public interface IParameterHandler<I> {
+    Type HandledType { get; }
+    Parameter Map(I item);
+  };
+
+  public class ParameterMappingException : Exception {
+    public ParameterMappingException(string message) : base(message) {
+    }
+  }
+
+  public class ParameterMapper<I> {
+    Dictionary<Type, IParameterHandler<I>> handlers = new Dictionary<Type,IParameterHandler<I>>();
+
+    public ParameterMapper() {
+    }
+
+    public void Register(IParameterHandler<I> handler) {
+      handlers[handler.HandledType] = handler;
+    }
+
+    public bool IsHandlerAvailable(I element) {
+      return handlers.ContainsKey(element.GetType());
+    }
+
+    public Parameter Map(string name, I element) {
+      if (element == null)
+        throw new ArgumentNullException("Element parameter may not be null");
+      IParameterHandler<I> handler;
+      if (handlers.TryGetValue(element.GetType(), out handler)) {
+        var param = handler.Map(element);
+        if (param == null)
+          throw new ParameterMappingException("Handler '" + handler.GetType().FullName + "' returned null parameter for type " + element.GetType().FullName);
+        param.Value.Name = name;
+        return param;
+      }
+      throw new ParameterMappingException("No handler for type " + element.GetType().FullName);
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parsers/AlgorithmConverter.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parsers/AlgorithmConverter.cs	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Controller/Parsers/AlgorithmConverter.cs	(revision 9350)
@@ -189,4 +189,5 @@
       jrun["name"] = run.Name;
       jrun["results"] = ConvertParametersToJson(run.Results);
+      jrun["params"] = ConvertParametersToJson(run.InputParameters);
       return jrun;
     }
@@ -196,4 +197,23 @@
       foreach (var run in runs)
         jarray.Add(ConvertRunToJson(run));
+      
+      
+      // if there are multiple different jobs to execute and they have the same id, we must change it here manually
+      var maxId = new Dictionary<string,int>();
+      for (int i = 0; i < jarray.Count; i++) {
+        for (int j = i + 1; j < jarray.Count; j++) {
+          if (jarray[i]["id"].ToString() == jarray[j]["id"].ToString()) {
+            int max;
+            if (!maxId.TryGetValue(jarray[i]["id"].ToString(), out max)) {
+              max = 1;
+              maxId[jarray[i]["id"].ToString()] = max;              
+            }
+            maxId[jarray[i]["id"].ToString()]++;
+            // change j's entry
+            jarray[j]["id"] = jarray[j]["id"].ToString() + " (" + max + ")";
+            jarray[j]["name"] = jarray[j]["name"] + " (" + max + ")";
+          }
+        }
+      }
       return jarray;
     }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/experiment.view.js
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/experiment.view.js	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/experiment.view.js	(revision 9350)
@@ -824,12 +824,26 @@
             var datatableSelect = $('.datatableOptions', ele);
 
-            var names = _.reduce(this.model.models, function (arr, model) {
-                return _.union(arr, _.map(model.get('results'), function (elem) { return elem.Name }));
-            }, []);
-
+            var names = [];
+            var previouslyFound = { results: {}, params: {} };
+            _.each(this.model.models, function (model) {
+                _.each(model.get('results'), function (res) {
+                    if (!previouslyFound['results'][res.Name]) {
+                        previouslyFound['results'][res.Name] = true;
+                        names.push({ name: res.Name, source: 'results' });
+                    }
+                });
+                _.each(model.get('params'), function (res) {
+                    if (!previouslyFound['params'][res.Name]) {
+                        previouslyFound['params'][res.Name] = true;
+                        names.push({ name: res.Name, source: 'params' });
+                    }
+                });
+            });
+            previouslyFound = {};
+            this.options.modelMapping = names;
             this.bubbleSelect = $('select[class="bubbleSize"]', ele);
 
-            _.each(names, function (name) {
-                var option = $("<option />", { value: name, text: name });
+            _.each(names, function (entry) {
+                var option = $("<option />", { value: entry.name, text: entry.name });
                 option.clone().appendTo(xAxisSelect);
                 option.clone().appendTo(yAxisSelect);
@@ -837,12 +851,12 @@
                 var rowNames = null;
                 var foundModel = _.find(self.model.models, function (model) {
-                    var entry = _.find(model.get('results'), function (entry) { return entry.Name == name && entry.RowNames });
-                    if (entry)
-                        rowNames = entry.RowNames;
-                    return entry && entry.RowNames;
+                    var e = _.find(model.get(entry.source), function (e) { return e.Name == entry.name && e.RowNames });
+                    if (e)
+                        rowNames = e.RowNames;
+                    return e && e.RowNames;
                 });
                 if (rowNames) {
-                    self.options.datatables[name] = rowNames;
-                    $('<option />', { value: name, text: name }).appendTo(datatableSelect);
+                    self.options.datatables[entry.name] = rowNames;
+                    $('<option />', { value: entry.name, text: entry.name }).appendTo(datatableSelect);
                 }
             });
@@ -852,4 +866,6 @@
             this.options.xAxis = this.model.models[0].get('results')[0].Name;
             this.options.yAxis = this.options.xAxis;
+            this.options.selectedXIndex = 0;
+            this.options.selectedYIndex = 0;
             this.options.plot = 'Boxplot';
             $('div[class="bubbleSlider"]', ele).slider({
@@ -909,4 +925,5 @@
         xAxisSelected: function (evt) {
             var target = $(evt.target);
+            this.options.selectedXIndex = target.prop("selectedIndex");
             this.options.xAxis = target.val();
             this.createPlot();
@@ -914,4 +931,5 @@
         yAxisSelected: function (evt) {
             var target = $(evt.target);
+            this.options.selectedYIndex = target.prop("selectedIndex");
             this.options.yAxis = target.val();
             this.createPlot();
@@ -967,25 +985,26 @@
         createBoxplot: function () {
             var self = this;
-
+            var parameterXSource = this.options.modelMapping[this.options.selectedXIndex].source; // either 'params' or 'results'
+            var parameterYSource = this.options.modelMapping[this.options.selectedYIndex].source; // either 'params' or 'results'
             // prepare data for boxplot
             var values = {};
             for (var i = 0; i < this.model.models.length; i++) {
-                var xlabel = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.xAxis });
+                var xlabel = _.find(this.model.models[i].get(parameterXSource), function (itm) { return itm.Name == self.options.xAxis });
                 if (!xlabel)
                     continue;
 
                 if ($.isArray(xlabel.Value))
-                    values[xlabel.Name + ' = ' + xlabel.Value[0]] = [];
+                    values[parameterXSource + '.' + xlabel.Name + ' = ' + xlabel.Value[0]] = [];
                 else
-                    values[xlabel.Name + ' = ' + xlabel.Value] = [];
+                    values[parameterXSource + '.' + xlabel.Name + ' = ' + xlabel.Value] = [];
             }
 
             for (var i = 0; i < this.model.models.length; i++) {
-                var xlabel = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.xAxis });
-                var entry = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.yAxis });
+                var xlabel = _.find(this.model.models[i].get(parameterXSource), function (itm) { return itm.Name == self.options.xAxis });
+                var entry = _.find(this.model.models[i].get(parameterYSource), function (itm) { return itm.Name == self.options.yAxis });
                 if (!xlabel || !entry || !entry.Value)
                     continue;
 
-                var index = xlabel.Name + ' = ' + ($.isArray(xlabel.Value) ? xlabel.Value[0] : xlabel.Value);
+                var index = parameterXSource + '.' + xlabel.Name + ' = ' + ($.isArray(xlabel.Value) ? xlabel.Value[0] : xlabel.Value);
 
                 if ($.isArray(entry.Value))
@@ -1003,11 +1022,12 @@
         createBubblechart: function () {
             var self = this;
-
+            var parameterXSource = this.options.modelMapping[this.options.selectedXIndex].source; // either 'params' or 'results'
+            var parameterYSource = this.options.modelMapping[this.options.selectedYIndex].source; // either 'params' or 'results'
             // prepare data for bubble chart
             var values = [];
             var autoscaleBubbles = this.bubbleSelect.val() != 'Constant';
             for (var i = 0; i < this.model.models.length; i++) {
-                var xValue = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.xAxis });
-                var yValue = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.yAxis });
+                var xValue = _.find(this.model.models[i].get(parameterXSource), function (itm) { return itm.Name == self.options.xAxis });
+                var yValue = _.find(this.model.models[i].get(parameterYSource), function (itm) { return itm.Name == self.options.yAxis });
                 if (!xValue || !yValue)
                     continue;
@@ -1019,5 +1039,8 @@
                 } else {
                     var valueProvider = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.bubbleSelect.val(); });
-                    if (!valueProvider) {
+                    if (!valueProvider) 
+                        valueProvider = _.find(this.model.models[i].get('params'), function (itm) { return itm.Name == self.bubbleSelect.val(); });
+
+                    if (!valueProvider) {                        
                         size = this.options.bubbleSize;
                     } else {
@@ -1055,4 +1078,7 @@
             for (var i = 0; i < this.model.models.length; i++) {
                 var table = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.options.selectedDatatable });
+                if (!table)
+                    table = _.find(this.model.models[i].get('params'), function (itm) { return itm.Name == self.options.selectedDatatable });
+
                 if (!table)
                     continue;
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.model.js
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.model.js	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.model.js	(revision 9350)
@@ -37,5 +37,5 @@
         poll: function () {
             var self = this;
-            this.fetch({ cache: false, update: true, success: function () {
+            this.fetch({ cache: false, reset: true, success: function () {
                 self._poll();
             }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.view.js
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.view.js	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.view.js	(revision 9350)
@@ -16,5 +16,4 @@
         initialize: function () {
             this.collection.bind('remove', this.render, this);
-            //this.collection.bind('a', this.render, this);
         },
         render: function () {
@@ -89,4 +88,5 @@
             rcv.render();
             for (var i = 0; i < this.model.models.length; i++) {
+                $('<h3></h3>').text(this.model.models[i].get('name')).appendTo(this.$el);
                 var rev = new my.ResultEntryView({ model: this.model.models[i], el: this.$el });
                 rev.render();
@@ -150,42 +150,57 @@
         initialize: function () {
             this.plotted = {};
+            this.plotted['params'] = {};
+            this.plotted['results'] = {};
         },
         render: function () {
             this.template = _.template($('#runTemplate').html());
             var table = $(this.template(this.model.attributes));
-            var body = $("tbody", table);
+            var body = $('tbody[class="results"]', table);
             table.appendTo(this.$el);
+            // render the results of the model
             var results = this.model.get('results');
             for (var i = 0; i < results.length; i++) {
-                var row = $('<tr/>').attr('data-index', i);
-                $('<td/>').text(results[i].Name).appendTo(row);
-                if ($.isArray(results[i].Value)) {
-                    var col = $('<td/>').appendTo(row);
-                    var tevDiv = $('<div/>');
-                    var plotDiv = $('<div/>').appendTo($('#tmp'));;
-                    this.plotted[i] = {};
-                    var tv = new my.TabView({
-                        model: [
-                          { name: 'Table', content: tevDiv },
-                          { name: 'Plot', content: plotDiv },
-                        ],
-                        el: col
-                    });
-                    this.listenTo(tv, 'tab-activated', this.tabActivated);
-                    tv.render();
-
-                }
-                else {
-                    $('<td/>').text(results[i].Value).appendTo(row);
-                }
-                row.appendTo(body);
-            }
+                this.renderModelEntry(results[i], i, body, 'results');
+            }
+
+            var inputs = this.model.get('params');
+            body = $('tbody[class="inputs"]', table);
+            for (var i = 0; i < inputs.length; i++) {
+                this.renderModelEntry(inputs[i], i, body, 'params');
+            }
+
+            var av = new my.AccordionView({el: $(table)});
+            av.render();
+        },
+        renderModelEntry: function(entry, index, body, attribute) {         
+            var row = $('<tr/>').attr('data-index', index).attr('data-attribute', attribute);
+            $('<td/>').text(entry.Name).appendTo(row);
+            if ($.isArray(entry.Value)) {
+                var col = $('<td/>').appendTo(row);
+                var tevDiv = $('<div/>');
+                var plotDiv = $('<div/>').appendTo($('#tmp'));                                
+                this.plotted[attribute][index] = {};
+                var tv = new my.TabView({
+                    model: [
+                        { name: 'Table', content: tevDiv },
+                        { name: 'Plot', content: plotDiv },
+                    ],
+                    el: col
+                });
+                this.listenTo(tv, 'tab-activated', this.tabActivated);
+                tv.render();
+            }
+            else {
+                $('<td/>').text(entry.Value).appendTo(row);
+            }
+            row.appendTo(body);
         },
         tabActivated: function (evt) {
             var index = parseInt(evt.element.parents('tr').attr('data-index'));
-            if (evt.name == 'Plot' && !this.plotted[index].Plot) {
-                this.plotted[index].Plot = true;
+            var attribute = evt.element.parents('tr').attr('data-attribute');
+            if (evt.name == 'Plot' && !this.plotted[attribute][index].Plot) {
+                this.plotted[attribute][index].Plot = true;
                 var plotDiv = $('<div/>').appendTo($('#tmp'));
-                var pv = new my.PlotView({ model: this.model.get('results')[index], el: plotDiv, transpose: true });
+                var pv = new my.PlotView({ model: this.model.get(attribute)[index], el: plotDiv, transpose: true });
                 pv.render();
                 plotDiv.appendTo(evt.element);
@@ -198,8 +213,11 @@
                 });
                 rv.render();
-            } else if (evt.name == 'Table' && !this.plotted[index].Table) {
-                this.plotted[index].Table = true;
-                var tevDiv = $('<div/>');
-                var tev = new my.TableEditView({ model: this.model.get('results')[index].Value, rowNames: this.model.get('results')[index].RowNames, useDatatable: true, el: tevDiv });
+                plotDiv.width(rv.$el.width());
+                plotDiv.height(rv.$el.height());
+                pv.refresh();
+            } else if (evt.name == 'Table' && !this.plotted[attribute][index].Table) {
+                this.plotted[attribute][index].Table = true;
+                var tevDiv = $('<div/>').css('overflow', 'scroll');
+                var tev = new my.TableEditView({ model: this.model.get(attribute)[index].Value, rowNames: this.model.get(attribute)[index].RowNames, useDatatable: true, el: tevDiv });
                 tev.render();
                 tevDiv.appendTo(evt.element)
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Mappings/tsp.xml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Mappings/tsp.xml	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Mappings/tsp.xml	(revision 9350)
@@ -1,5 +1,5 @@
 <?xml version='1.0'?>
 <scenario xmlns="urn:scenario-schema">
-  <name>Traveling Salesman Problem</name>
+  <name>Genetic Algorithm - TSP</name>
   <algorithm mapper="HeuristicLab.Mappers.TSPScenarioMapper">
     <parameters>
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Job/Index.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Job/Index.cshtml	(revision 9349)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Job/Index.cshtml	(revision 9350)
@@ -59,17 +59,32 @@
 
 <script type="text/template" id="runTemplate">
-  <h3><%= name %></h3>
-  <div>
+  <div class="accordion">
+    <h3>Results</h3>
+    <div>
     <table>
-      <thead>
+        <thead>
         <tr>
-          <td>Key</td>
-          <td>Value</td>
+            <td>Key</td>
+            <td>Value</td>
         </tr>
-      </thead>
-      <tbody>
-      </tbody>
+        </thead>
+        <tbody class="results">
+        </tbody>
     </table>
-  </div>
+    </div>
+    <h3>Inputs</h3>
+    <div>
+    <table>
+        <thead>
+        <tr>
+            <td>Key</td>
+            <td>Value</td>
+        </tr>
+        </thead>
+        <tbody class="inputs">
+        </tbody>
+    </table>
+    </div>
+</div>
 </script>
 
