diff --git a/code/classes/SCDclass_algo.m b/code/classes/SCDclass_algo.m
index df9ccb77fe74f9572f11299f965617adbbcee25e..468a7941312f2b986bc1e9e00e4cdc8cf5be4e0e 100644
--- a/code/classes/SCDclass_algo.m
+++ b/code/classes/SCDclass_algo.m
@@ -475,8 +475,22 @@ classdef SCDclass_algo
         %% MDS container methods forwarders
         
         function obj = addparameter(obj, param)
-            obj.mdscontainer=obj.mdscontainer.addparameter(param);
-            obj.mdscontainer=obj.mdscontainer.bindlastparameter(obj.modelname, obj.datadictionary, obj.exportedtps);        
+          % bind parameter(s) to algoobj's name, dictionary and last
+          % exported tp
+          
+          % assume this parameter is bound to last exported tp on the list
+          if ~isempty(obj.exportedtps), tpname = obj.exportedtps{end};
+          else, tpname = '';
+          end
+          
+          for ii=1:numel(param)
+            param(ii).bind(obj.modelname, obj.datadictionary, tpname);
+          end
+          obj.mdscontainer=obj.mdscontainer.addparameter(param);
+        end
+        
+        function obj = bindparameters(obj)
+            obj.mdscontainer=obj.mdscontainer.bindparameters(obj.modelname, obj.datadictionary, obj.exportedtps);        
         end
         
         function obj = printparameters(obj)
@@ -622,6 +636,7 @@ classdef SCDclass_algo
           % an algorithm block diagram
           % should pass ctrl-d (instandalone opening)
           % after this call
+          obj.bindparameters; % bind mds parameters
           obj.updatetemplatetp;
           obj.buildworkspacetpstruct;
           SCDconf_setConf('sim');
diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m
index 17dc92ba8d2d0de377ddcb3481480c0a960924c3..f69343e70e5df5d845c9b398be0ca2d67d39b72a 100644
--- a/code/classes/SCDclass_expcode.m
+++ b/code/classes/SCDclass_expcode.m
@@ -583,7 +583,6 @@ classdef SCDclass_expcode
           D = digraph(A); % directed graph
           % topological sorting, maintaining index order where possible
           isort = toposort(D,'Order','stable'); 
-          
           obj.algoobjlist = obj.algoobjlist(isort); % sort the init obj list
         end
             
diff --git a/code/classes/SCDclass_mdsobjcontainer.m b/code/classes/SCDclass_mdsobjcontainer.m
index 7a550b510bd75da2888844a9f2bba453fa054207..fd1b6b9102c7736e620e592857b0ae9369da45c0 100644
--- a/code/classes/SCDclass_mdsobjcontainer.m
+++ b/code/classes/SCDclass_mdsobjcontainer.m
@@ -29,13 +29,9 @@ classdef SCDclass_mdsobjcontainer
         end
         
         function obj = addparameter(obj, param)
-            % Adds a parameter object
-            if obj.numparams==0
-                obj.mdsparams=param;
-            else
-                obj.mdsparams=[obj.mdsparams; param];
-            end 
-            obj.numparams=obj.numparams+1;
+            % Adds one or more parameter objects to list of params
+            obj.mdsparams = [obj.mdsparams; param];
+            obj.numparams = obj.numparams + numel(param);  
         end
         
         function obj = printparameters(obj)
@@ -64,6 +60,7 @@ classdef SCDclass_mdsobjcontainer
         end
 
         function obj = bindparameters(obj, modelname, datadictionary, exportedtps)
+          % bind mds parameters to their model, data dictionary and tunable parameter
             if obj.numparams>0   
                 for ii=1:obj.numparams
                     obj.mdsparams(ii)=obj.mdsparams(ii).setmodelname(modelname);
@@ -76,18 +73,7 @@ classdef SCDclass_mdsobjcontainer
                 end        
             end
         end
-        
-        function obj = bindlastparameter(obj, modelname, datadictionary, exportedtps)
-            if obj.numparams>0   
-                obj.mdsparams(end)=obj.mdsparams(end).setmodelname(modelname);
-                obj.mdsparams(end)=obj.mdsparams(end).setdatadictionary(datadictionary);
-                if numel(exportedtps)>0
-                    obj.mdsparams(end)=obj.mdsparams(end).setparamstructure(exportedtps{end});
-                end        
-            end
-            
-        end
-        
+         
         function obj = addwavegen(obj, wavegen)
             % adds a wavegen object
             if obj.numwavegens==0
diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m
index 8050f10b875315d76556bd04ee4696f0f329aca4..e0bb0989b7221bbe2673e5fd8e7dcc81e32aec1f 100644
--- a/code/classes/SCDclass_mdspar.m
+++ b/code/classes/SCDclass_mdspar.m
@@ -226,6 +226,12 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
             
         end
         
+        function obj = bind(obj,modelname,datadictionary,exportedtp)
+          obj.setmodelname(modelname);
+          obj.setdatadictionary(datadictionary);
+          obj.setparamstructure(exportedtp);
+        end
+          
         function out = gettargetparam(obj)
             out = obj.modelparam;
         end
@@ -262,7 +268,6 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
                 obj.datadictionary = ddname;
             end
         end
-        
     end
     
     methods