diff --git a/beat/web/common/serializers.py b/beat/web/common/serializers.py
index 44b7b28b5dd6a897cca852507445ad64c9340f8f..e58aca79a5e07b778babd2a00cacd9e2c9853ce2 100644
--- a/beat/web/common/serializers.py
+++ b/beat/web/common/serializers.py
@@ -343,10 +343,18 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
             previous_version_id = None
 
         if data.has_key('fork_of'):
-            fork_of_id = self.Meta.beat_core_class.Storage(settings.PREFIX,
-                data['fork_of'])
-            if fork_of_id.username is None:
-                fork_of_id.username = user.username
+            if self.Meta.beat_core_class is not None:
+                fork_of_id = self.Meta.beat_core_class.Storage(settings.PREFIX,
+                    data['fork_of'])
+                if fork_of_id.username is None:
+                    fork_of_id.username = user.username
+            else:
+                fork_of_id                = MapDot()
+                fork_elem                 = json.loads(json.dumps(ast.literal_eval(json.loads(json.dumps(data['fork_of'])))))
+                fork_of_id["username"]    = fork_elem['username']
+                fork_of_id["name"]        = fork_elem['name']
+                fork_of_id["version"]     = fork_elem['version']
+                data['data'] = json.dumps(ast.literal_eval(json.loads(json.dumps(data['data']))))
         else:
             fork_of_id = None
 
diff --git a/beat/web/plotters/serializers.py b/beat/web/plotters/serializers.py
index 2d7457d811827791f7dca374fa5be1671f8e04f0..40b4e64355446f4f00c1993a13cb8a9849b3ef63 100644
--- a/beat/web/plotters/serializers.py
+++ b/beat/web/plotters/serializers.py
@@ -112,7 +112,7 @@ class PlotterParameterCreationSerializer(ContributionCreationSerializer):
 
     class Meta(ContributionCreationSerializer.Meta):
         model = PlotterParameter
-        fields = ['name', 'plotter', 'data', 'version', 'previous_version', 'short_description', 'description']
+        fields = ['name', 'plotter', 'data', 'version', 'previous_version', 'short_description', 'description', 'fork_of']
         #beat_core_class = beat.core.PlotterParameter
 
     def create(self, validated_data):
@@ -153,6 +153,13 @@ class PlotterParameterCreationSerializer(ContributionCreationSerializer):
             validated_data['short_description'] = validated_data['previous_version'].short_description
             validated_data['description'] = validated_data['previous_version'].description
 
+        #Create fork
+        if validated_data.has_key("fork_of"):
+            #add description/short_description to new version
+            validated_data['short_description'] = validated_data['fork_of'].short_description
+            validated_data['description'] = validated_data['fork_of'].description
+
+
         plotterparameter = PlotterParameter.objects.create(**validated_data)
         if plotterparameter is None:
             raise PlotterParameterCreationFailedException()
diff --git a/beat/web/plotters/static/plotters/app/controllers/plotterparameterController.js b/beat/web/plotters/static/plotters/app/controllers/plotterparameterController.js
index af17fb8a8e7a0e64fb97427a234947acfdf11e74..4074e32572c87d06e10ac69883b967738e08a91d 100644
--- a/beat/web/plotters/static/plotters/app/controllers/plotterparameterController.js
+++ b/beat/web/plotters/static/plotters/app/controllers/plotterparameterController.js
@@ -36,6 +36,8 @@ app.controller('plotterparameterController',['$scope', 'plotterFactory', 'plotte
    $scope.textdata = [];
    $scope.plotterparams_update = {};
    $scope.plotterparams_newversion = {};
+   $scope.plotterparams_fork = {};
+   $scope.plotterparameter_forking = undefined;
 
    $scope.init = function(user, plotterparameter, url_prefix, data_itemcontent_file, data_table_itemcontent_file)
    {
diff --git a/beat/web/plotters/static/plotters/app/directives/plotterparameterItemView.js b/beat/web/plotters/static/plotters/app/directives/plotterparameterItemView.js
index 073af49f2211bec65420c4f390d6221264161d64..df97c1bd8d187a6328c70a536e8f7654cf82419d 100644
--- a/beat/web/plotters/static/plotters/app/directives/plotterparameterItemView.js
+++ b/beat/web/plotters/static/plotters/app/directives/plotterparameterItemView.js
@@ -341,6 +341,73 @@ app.directive("createplotterparameternewversion", function()
     };
 });
 
+//Directive used to handle save plotterparameter click
+app.directive("createplotterparameterfork", function()
+{
+    return {
+        link:function(scope, element, attrs)
+        {
+            element.bind("click", function()
+            {
+                //No plotter is selected
+                if(attrs.plotter == "None" || attrs.plotter=="")
+                {
+                    //plotter is selected: parameter tuning
+                    //should actually never fall here
+
+                    if($("#plotter-selection :selected").text().length == 0)
+                    {
+                        alert("Please select a plotter first")
+                    }
+                    else
+                    {
+                        scope.plotterparams_update.plotter = scope.plotters.selected.id;
+
+                        createPlotterParameter();
+                    }
+                }
+                else
+                {
+                    scope.plotterparams_fork.plotter = scope.plotters.selected.id;
+                    scope.plotterparams_fork.name = scope.plotterparams_update.name;
+                    scope.plotterparams_newversion.version = "1";
+                    scope.plotterparams_fork.fork_of = {};
+                    scope.plotterparams_fork.fork_of['username'] = scope.plotterparameter_user;
+                    scope.plotterparams_fork.fork_of['name'] = scope.plotterparameter_name;
+                    scope.plotterparams_fork.fork_of['version'] = scope.plotterparameter_version;
+                    scope.plotterparams_fork.data = scope.plotterparams_update;
+
+                    scope.plotterparameter_forking = true;
+
+                    createPlotterParameter();
+                }
+            });
+
+            function createPlotterParameter()
+            {
+                scope.plotterparameterFactory.createPlotterParameter(scope.user, scope.plotterparams_fork, scope.url_prefix)
+                    .success(function (returnedData)
+                    {
+
+                        beat.ui.plotterparameter.plotterparameter_created('plotterparameter_created', scope);
+                    })
+                    .error(function (error)
+                    {
+                        var error_text = "";
+                        $.each(error, function( key, value ) {
+
+                                error_text += key + ": " + value;
+                        });
+                        scope.status = 'Unable to create plotterparameter:\n' + error_text;
+
+                        alert(scope.status);
+                    });
+
+            }
+        }
+    };
+});
+
 
 //Directive used to append parameters
 app.directive("plotparams", function($compile){
diff --git a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
index 57c69da838cfb4a391508eca35cc337778fe32a3..aeac615ffa3e3c01b3db3719b4f2cbdcb6098820 100644
--- a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
+++ b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
@@ -38,12 +38,27 @@
     </h3>
     </div><div class="col-sm-4 vertical-center">
       <div class="action-buttons pull-right">
-        <button id="save" type="submit" class="btn btn-success btn-sm button_save" data-toggle="tooltip" data-placement="bottom" data-plotter="{{plotter}}" data-parameters="{{parameters}}" createplotterparameternewversion><i class="fa fa-save"></i> Save</button>
+        <button id="save" type="submit" class="btn btn-success btn-sm button_save" data-toggle="tooltip" data-placement="bottom" data-plotter="{{plotter}}" data-parameters="{{parameters}}" createplotterparameterfork><i class="fa fa-save"></i> Save</button>
         <a id="cancel" class="btn btn-danger btn-sm" onclick="window.history.back();"><i class="fa fa-times fa-lg"></i> Cancel</a>
       </div>
     </div>
 </div>
 
+<div class="row">
+  <div class="col-sm-12">
+    <div class="panel-group" id="information-accordion" role="tablist" aria-multiselectable="true">
+      <div id="settings_name-div" class="section">
+        <div class="form-group has-feedback">
+          <label class="control-label" for="settings_name">Name:</label>
+          <input class="form-control input-sm" id="settings_name" class="label" data-placeholder="Start typing a name..." autocomplete="off" autocorrect="off" autocapitalize="off" type="string" key="name" value="{{ plotterparameter.name }}"  textinput></input>
+          <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
+          <span class="help">Enter a meaningful name to help you recognize this plotterparameter. Auto-completion will help you in keeping your naming conventions tide. If a chosen name is <span class="text-danger">highlighted in red</span>, it is because it is already being used. In this case, choose another name.</span>
+        </div>
+      </div>
+    </div>{# panel-group #}
+  </div>{# col-sm-12 #}
+</div>{# row #}
+
 <div class="row">
   <div class="col-sm-12">
 
@@ -72,7 +87,7 @@
               <div class="panel panel-default step1">
                 <div class="panel-heading" role="tab" id="info-heading">
                   <h4 class="panel-title">
-                    <a role="button" data-toggle="collapse" data-parent="#info-heading" href="#collapse-info" aria-expanded="true" aria-controls="collapse-info">Click the "Save" Button to create a new version of this plotterparameter</a>
+                    <a role="button" data-toggle="collapse" data-parent="#info-heading" href="#collapse-info" aria-expanded="true" aria-controls="collapse-info">Click the "Save" Button to create a fork of this plotterparameter</a>
                   </h4>
                 </div>{# panel-heading #}
                 <div id="collapse-info" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="info-heading">
diff --git a/beat/web/ui/static/ui/js/plotterparameterdialog.js b/beat/web/ui/static/ui/js/plotterparameterdialog.js
index b0aad75877808951ec9d7ba276ec5cfe4b6b85b8..f7bbe9b017021ee7aacfdfa0a75979e8f2bc7480 100644
--- a/beat/web/ui/static/ui/js/plotterparameterdialog.js
+++ b/beat/web/ui/static/ui/js/plotterparameterdialog.js
@@ -110,13 +110,21 @@ beat.ui.plotterparameter.plotterparameter_created = function(dialog_id, scope)
                         $('#' + dialog_id).dialog("close");
                         $(".explanation_text").show();
                         num_click = 0;
-                        if(scope.plotterparameter_version == undefined)
+                        if(scope.plotterparameter_forking == undefined)
                         {
-                            window.location = scope.url_prefix + "/" + "plotters/plotterparameter/" + scope.user + "/"+ scope.plotterparams_update.name + "/1";
+                            if(scope.plotterparameter_version == undefined)
+                            {
+                                window.location = scope.url_prefix + "/" + "plotters/plotterparameter/" + scope.user + "/"+ scope.plotterparams_update.name + "/1";
+                            }
+                            else
+                            {
+                                window.location = scope.url_prefix + "/" + "plotters/plotterparameter/" + scope.plotterparameter_user + "/"+ scope.plotterparameter_name + "/" + scope.plotterparams_newversion.version;
+                            }
                         }
                         else
                         {
-                            window.location = scope.url_prefix + "/" + "plotters/plotterparameter/" + scope.plotterparameter_user + "/"+ scope.plotterparameter_name + "/" + scope.plotterparams_newversion.version;
+                            scope.plotterparameter_forking = undefined;
+                            window.location = scope.url_prefix + "/" + "plotters/plotterparameter/" + scope.user + "/"+ scope.plotterparams_update.name + "/1";
                         }
                     }
                 }