diff --git a/lib/siplib.py b/lib/siplib.py
index dda1521ffbbc68924ba3f2c4e1174508579afce6..6444e6c16032d84833d1865573137bb1d7cbcc1e 100644
--- a/lib/siplib.py
+++ b/lib/siplib.py
@@ -172,22 +172,112 @@ class SimplePipeline():
 
 
 class ImagingPipeline():
-    #todo
+    def __init__(self,
+                 pipeline_map,
+                 imagerintegrationtime,
+                 numberofmajorcycles,
+                 numberofinstrumentmodels,
+                 numberofcorrelateddataproducts,
+                 numberofskyimages,
+                 frequencyintegrationstep=None,
+                 timeintegrationstep=None,
+                 skymodeldatabase=None,
+                 demixing=None):
+
+        self.__pyxb_pipeline=ltasip.ImagingPipeline(
+            frequencyIntegrationStep=frequencyintegrationstep,
+            timeIntegrationStep=timeintegrationstep,
+            skyModelDatabase=skymodeldatabase,
+            demixing=demixing,
+            imagerIntegrationTime=imagerintegrationtime,
+            numberOfMajorCycles=numberofmajorcycles,
+            numberOfInstrumentModels=numberofinstrumentmodels,
+            numberOfCorrelatedDataProducts=numberofcorrelateddataproducts,
+            numberOfSkyImages=numberofskyimages,
+            **pipeline_map.get_dict()
+        )
+
     def get_pyxb_pipeline(self):
         return self.__pyxb_pipeline
 
+
 class CalibrationPipeline():
-    #todo
+    def __init__(self,
+                 pipeline_map,
+                 skymodeldatabase,
+                 numberofinstrumentmodels,
+                 numberofcorrelateddataproducts,
+                 frequencyintegrationstep=None,
+                 timeintegrationstep=None,
+                 flagautocorrelations=None,
+                 demixing=None):
+        self.__pyxb_pipeline=ltasip.CalibrationPipeline(
+            frequencyIntegrationStep=frequencyintegrationstep,
+            timeIntegrationStep=timeintegrationstep,
+            flagAutoCorrelations=flagautocorrelations,
+            demixing=demixing,
+            skyModelDatabase=skymodeldatabase,
+            numberOfInstrumentModels=numberofinstrumentmodels,
+            numberOfCorrelatedDataProducts=numberofcorrelateddataproducts,
+            **pipeline_map.get_dict()
+        )
+
     def get_pyxb_pipeline(self):
         return self.__pyxb_pipeline
 
 class AveragingPipeline():
-    #todo
+    def __init__(self,
+                 pipeline_map,
+                 numberofcorrelateddataproducts,
+                 frequencyintegrationstep,
+                 timeintegrationstep,
+                 flagautocorrelations,
+                 demixing):
+        self.__pyxb_pipeline=ltasip.CalibrationPipeline(
+            frequencyIntegrationStep=frequencyintegrationstep,
+            timeIntegrationStep=timeintegrationstep,
+            flagAutoCorrelations=flagautocorrelations,
+            demixing=demixing,
+            numberOfCorrelatedDataProducts=numberofcorrelateddataproducts,
+            **pipeline_map.get_dict()
+        )
+
     def get_pyxb_pipeline(self):
         return self.__pyxb_pipeline
 
+
 class PulsarPipeline():
-    #todo
+    def __init__(self,
+                 pipeline_map,
+                 pulsarselection,
+                 pulsars,
+                 dosinglepulseanalysis,
+                 convertRawTo8bit,
+                 subintegrationLength,
+                 subintegrationlength_unit,
+                 skiprfiexcision,
+                 skipdatafolding,
+                 skipoptimizepulsarprofile,
+                 skipconvertrawintofoldedpsrfits,
+                 runrotationalradiotransientsanalysis,
+                 skipdynamicspectrum,
+                 skipprefold):
+
+        self.__pyxb_dataproduct=ltasip.PulsarPipeline(
+            pulsarSelection=pulsarselection,
+	    	pulsars=pulsars,
+            doSinglePulseAnalysis=dosinglepulseanalysis,
+            convertRawTo8bit=convertRawTo8bit,
+            subintegrationLength=ltasip.Time(subintegrationLength , units=subintegrationlength_unit),
+            skipRFIExcision=skiprfiexcision,
+            skipDataFolding=skipdatafolding,
+            skipOptimizePulsarProfile=skipoptimizepulsarprofile,
+            skipConvertRawIntoFoldedPSRFITS=skipconvertrawintofoldedpsrfits,
+            runRotationalRAdioTransientsAnalysis=runrotationalradiotransientsanalysis,
+			skipDynamicSpectrum=skipdynamicspectrum,
+        	skipPreFold=skipprefold,
+            **pipeline_map.get_dict()
+        )
     def get_pyxb_pipeline(self):
         return self.__pyxb_pipeline
 
@@ -1091,7 +1181,7 @@ def main():
                         units="parsec",
                         length=5,
                         ),
-                )
+                    )
             ],
             locationframe="GEOCENTER",
             timeframe="timeframe",
@@ -1234,7 +1324,11 @@ def main():
                                         integrationinterval_unit="ns",
                                         channelwidth_frequency=160,
                                         channelwidth_frequencyunit="MHz"
-                                    )
+                                    ),
+                                    # todo coherentstokesprocessing=,
+                                    # todo incoherentstokesprocessing=,
+                                    # todo flyseyeprocessing=,
+                                    # todo nonstandardprocessing=
                                 )],
                                 transientbufferboardevents=["event1","event2"]
     )
@@ -1296,7 +1390,7 @@ def main():
                         ProcessRelation(
                             identifier_source="source",
                             identifier="90")]
-                    ),
+                ),
                 )
         )
     )
@@ -1325,7 +1419,7 @@ def main():
                         ProcessRelation(
                             identifier_source="source",
                             identifier="90")]
-                    ),
+                ),
                 )
         )
     )
@@ -1353,7 +1447,7 @@ def main():
                         ProcessRelation(
                             identifier_source="source",
                             identifier="90")]
-                    ),
+                ),
                 )
         )
     )
@@ -1382,7 +1476,7 @@ def main():
                         ProcessRelation(
                             identifier_source="source",
                             identifier="90")]
-                    ),
+                ),
                 ),
             subbandspersubbandgroup=5,
             subbandgroupspermS=5
@@ -1390,6 +1484,19 @@ def main():
         )
     )
 
+
+    print "===\nAdding imaging pipelinerun:\n"
+    # todo print mysip.add_pipelinerun(ImagingPipeline())
+
+    print "===\nAdding calibration pipelinerun:\n"
+    # todo print mysip.add_pipelinerun(CalibrationPipeline())
+
+    print "===\nAdding averaging pipelinerun:\n"
+    # todo print mysip.add_pipelinerun(AveragingPipeline())
+
+    print "===\nAdding pulsar pipelinerun:\n"
+    # todo print mysip.add_pipelinerun(PulsarPipeline())
+
     #path = os.path.expanduser("~/sip9091.xml")
     #with open(path, 'w+') as f:
     #   f.write(mysip.get_prettyxml())