diff --git a/steps/AveragingStepGenerator.cwl b/steps/AveragingStepGenerator.cwl
index 1abe69cf3f372e2249e97c6c57431ec2365274df..0be4cc15232de2e1d7a4347a1a51c72a7d05881f 100755
--- a/steps/AveragingStepGenerator.cwl
+++ b/steps/AveragingStepGenerator.cwl
@@ -15,53 +15,56 @@ inputs:
   - id: parset
     type: File
     inputBinding:
-      prefix: --input_parset=
-      position: 1 
-
+        position: -1
+        prefix: --input_parset
   - id: step_name
     type: string
     default: average
     doc: unique name for the step
     inputBinding:
-      position: 2
+        position: -1
   - id: timestep
     type: int
     default: 1
     doc: Number of time slots to average. It is truncated if exceeding the actual number of times.
     inputBinding:
-      prefix: timestep=
-      
+        prefix: timestep=
+        separate: false
   - id: freqstep
     type: int
     default: 1
     doc: Number of channels to average. It is truncated if exceeding the actual number of channels.
     inputBinding:
-      prefix: freqstep=
-      
+        prefix: freqstep=
+        separate: false
   - id: minpoints
     type: int
     doc: If number of averaged unflagged input points < minpoints, the averaged point is flagged.
     default: 0
     inputBinding:
-      prefix: minpoints=
+        prefix: minpoints=
+        separate: false
   - id: minperc
     type: float
     doc: Like minpoints, but expressed as a percentage of timestep*freqstep.
     default: 0
     inputBinding:
-      prefix: minperc=
+        prefix: minperc=
+        separate: false
   - id: timeresolution
     type: float
     doc: Target time resolution, in seconds. If this is given, and bigger than zero, it overrides <step>.timestep
     default: 0
     inputBinding:
-      prefix: timeresolution
+        prefix: timeresolution=
+        separate: false
   - id: freqresolution
     type: float
     doc: Target frequency resolution, in Hz (or append “MHz” or “kHz” to specify it in those units). If this is given, and bigger than zero, it overrides <step>.freqstep
     default: 0
     inputBinding:
-      prefix: freqresolution=
+        prefix: freqresolution=
+        separate: false
 
 
 outputs:
diff --git a/steps/DP3_flag_averaging.cwl b/steps/DP3_flag_averaging.cwl
new file mode 100644
index 0000000000000000000000000000000000000000..7556cc69a995b7120324014393d8f75fdc7c7cb3
--- /dev/null
+++ b/steps/DP3_flag_averaging.cwl
@@ -0,0 +1,123 @@
+cwlVersion: 1.1
+class: CommandLineTool
+baseCommand: [DPPP]
+
+label: "Flagging and Averaging"
+
+hints:
+    DockerRequirements:
+        dockerPull: lofaruser/imaging-pipeline
+
+inputs:
+    msin:
+        type: Directory
+    
+    msin_data_column:
+        type: string
+        default: "DATA"
+    
+    msin_writefullresflag:
+        type: boolean
+        default: False
+    
+    msin_baselines:
+        type: string
+        default: ""
+    
+    msin_autoweight:
+        type: boolean
+        default: False
+    
+    msout_data_column:
+        type: string
+        default: "DATA"
+        
+    msout_writefullresflag:
+        type: boolean
+        default: False
+    
+    msout_overwrite:
+        type: boolean
+        default: True
+    
+    msout_storagemanager:
+        type: string
+        default: "Dysco"
+        
+    msout_storagemanager_databitrate:
+        type: int
+        default: 0
+        
+    flagger_memory_used:
+        type: int
+        default: 0
+    
+    flagger_keep_statistics:
+        type: boolean
+        default: False
+        
+    flag_baseline:
+        type: string
+        default: ""
+    
+    flag_elevation:
+        type: string
+        default: "0deg..20deg"
+    
+    flag_amplitude:
+        type: double
+        default: 1.e-30
+    
+    interpolate_windowsize:
+        type: int
+    
+    
+    avg_timeresolution:
+        type: int
+    avg_frequenciesresolution:
+        type: int
+        
+    demixer_baseline:
+        type: string
+        default: ""
+    
+    demixer_frequency_steps:
+        type: int
+        default: 4
+    
+    demixer_time_steps:
+        type: int
+        default: 4
+        
+    demixer_ignore_target:
+        type: boolean
+        default: False
+    
+    demixer_target_source:
+        type: string
+    
+    demixer_subtract_sources:
+        type: string
+        
+    
+    
+outputs:
+    
+        
+
+        
+ndppp_prep_cal.control.type                                 =   dppp
+ndppp_prep_cal.control.max_per_node                         =   {{ num_proc_per_node_limit }}
+ndppp_prep_cal.control.error_tolerance                      =   {{ error_tolerance }}
+ndppp_prep_cal.argument.numthreads                          =   {{ max_dppp_threads }}
+
+ndppp_prep_cal.argument.steps                               =   [{{ initial_flagging }},{{ demix_step }}interp,avg]
+ndppp_prep_cal.argument.flagedge.type                       =   preflagger
+ndppp_prep_cal.argument.flagedge.chan                       =   [0..nchan/32-1,31*nchan/32..nchan-1] # we are running on a single subband
+
+ndppp_prep_cal.argument.flagbaseline.type                   =   preflagger
+ndppp_prep_cal.argument.flagamp.type                        =   preflagger
+ndppp_prep_cal.argument.interp.type                         =   interpolate
+ndppp_prep_cal.argument.avg.type                            =   average
+ndppp_prep_cal.argument.flagamp.type                        =   preflagger
+ndppp_prep_cal.argument.demix.type                          =   demixer
diff --git a/steps/echo.cwl b/steps/echo.cwl
new file mode 100644
index 0000000000000000000000000000000000000000..8e273f668bb0e83e240422e5524ab7aa03294408
--- /dev/null
+++ b/steps/echo.cwl
@@ -0,0 +1,12 @@
+class: CommandLineTool
+cwlVersion: v1.0
+id: echo
+baseCommand:
+  - cat
+inputs: 
+  file:
+    type: File
+    inputBinding:
+      position: 1
+    
+outputs: []
\ No newline at end of file
diff --git a/utils/parset_concat.py b/utils/parset_concat.py
index 5d488417df344e72dfa6990c6515bc6e97aa6c3c..c4c0506208e3d20c13db9cd650ebd24163ccc054 100755
--- a/utils/parset_concat.py
+++ b/utils/parset_concat.py
@@ -9,8 +9,8 @@ from argparse import ArgumentParser
 
 def parse_arguments(args):
     parser = ArgumentParser(description='Concatenate step defined to the input parset')
-    parser.add_argument('step_type', help='type of the step')
     parser.add_argument('step_name', help='name of the step')
+    parser.add_argument('step_type', help='type of the step')
     parser.add_argument('--input_parset', default=None, help='input parset')
     parser.add_argument('step_arguments', help='step arguments', nargs='+')