diff --git a/biopet-framework/src/main/java/nl/lumc/sasc/biopet/core/PipelineCommand.scala b/biopet-framework/src/main/java/nl/lumc/sasc/biopet/core/PipelineCommand.scala
new file mode 100644
index 0000000000000000000000000000000000000000..ba76acc2ab12e13f1905cc39e2ea4c4683a8cd29
--- /dev/null
+++ b/biopet-framework/src/main/java/nl/lumc/sasc/biopet/core/PipelineCommand.scala
@@ -0,0 +1,29 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package nl.lumc.sasc.biopet.core
+
+import java.io.FileOutputStream
+import org.broadinstitute.sting.queue.QCommandLine
+import org.broadinstitute.sting.queue.util.Logging
+
+trait PipelineCommand extends Logging {
+  val src = ""
+  val extension = ".scala"
+  
+  def main(args: Array[String]): Unit = {
+    val tempFile = java.io.File.createTempFile(src + ".", extension)
+    val is = getClass.getResourceAsStream(src + extension)
+    val os = new FileOutputStream(tempFile)
+    org.apache.commons.io.IOUtils.copy(is, os)
+    os.close()
+    
+    var argv: Array[String] = Array()
+    argv ++= Array("-S", tempFile.getAbsolutePath)
+    argv ++= args
+    return QCommandLine.main(argv)
+  }
+}
\ No newline at end of file
diff --git a/flexiprep/nbactions.xml b/flexiprep/nbactions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4413054d86d2540149f0c758a3c68a7c8f5c5430
--- /dev/null
+++ b/flexiprep/nbactions.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>run</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.flexiprep.Flexiprep -R1 input_R1.fastq -outputDir /home/pjvan_thof/pipelines/test -config /home/pjvan_thof/pipelines/biopet/flexiprep/examples/test.json</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath nl.lumc.sasc.biopet.pipelines.flexiprep.Flexiprep -R1 input_R1.fastq -outputDir /home/pjvan_thof/pipelines/test -config /home/pjvan_thof/pipelines/biopet/flexiprep/examples/test.json</exec.args>
+                <exec.executable>java</exec.executable>
+                <jpda.listen>true</jpda.listen>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>profile</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.flexiprep.Flexiprep -R1 input_R1.fastq -outputDir /home/pjvan_thof/pipelines/test -config /home/pjvan_thof/pipelines/biopet/flexiprep/examples/test.json</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+    </actions>
diff --git a/flexiprep/pom.xml b/flexiprep/pom.xml
index 9dd241d624226d037e0e8d239ad73eef118e3528..590efd968a34d3f92299f468c1f87ce76292ae9a 100644
--- a/flexiprep/pom.xml
+++ b/flexiprep/pom.xml
@@ -21,7 +21,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <sting.unpack.phase>prepare-package</sting.unpack.phase>
     <sting.shade.phase>package</sting.shade.phase>
-    <app.main.class>org.broadinstitute.sting.queue.QCommandLine</app.main.class>
+    <app.main.class>nl.lumc.sasc.biopet.pipelines.flexiprep.Flexiprep</app.main.class>
   </properties>
   
     <dependencies>
@@ -54,6 +54,20 @@
         </dependency>-->
     </dependencies>
     <build>
+        <resources>
+            <resource>
+                 <directory>src/main/java</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+            <resource>
+                 <directory>scripts</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <groupId>org.scala-tools</groupId>
diff --git a/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
index 422272f1df22d7fc6006f95cef88ee6930dca85d..15874b2d051834cc277427db3018d691c0d58226 100644
--- a/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
+++ b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
@@ -3,18 +3,20 @@ package nl.lumc.sasc.biopet.pipelines.flexiprep
 import nl.lumc.sasc.biopet.core._
 import nl.lumc.sasc.biopet.wrappers._
 import org.broadinstitute.sting.queue.QScript
+import org.broadinstitute.sting.queue.engine.JobRunInfo
 import org.broadinstitute.sting.queue.extensions.gatk._
 import org.broadinstitute.sting.queue.extensions.picard._
 import org.broadinstitute.sting.queue.function._
 import scala.util.parsing.json._
 import org.broadinstitute.sting.commandline._
+import nl.lumc.sasc.biopet.pipelines.flexiprep.scripts._
 
 class Flexiprep(private var globalConfig: Config) extends QScript {
   def this() = this(new Config())
   
   @Argument(doc="Config Json file",shortName="config", required=false) var configfiles: List[File] = Nil
-  @Input(doc="R1 fastq file", shortName="R1",required=true) var input_R1: File = _
-  @Input(doc="R2 fastq file", shortName="R2", required=false) var input_R2: File = _
+  @Input(doc="R1 fastq file (gzipped allowed)", shortName="R1",required=true) var input_R1: File = _
+  @Input(doc="R2 fastq file (gzipped allowed)", shortName="R2", required=false) var input_R2: File = _
   @Argument(doc="Output directory", shortName="outputDir", required=true) var outputDir: String = _
   @Argument(doc="Skip Trim fastq files", shortName="skiptrim", required=false) var skipTrim: Boolean = false
   @Argument(doc="Skip Clip fastq files", shortName="skipclip", required=false) var skipClip: Boolean = false
@@ -26,7 +28,6 @@ class Flexiprep(private var globalConfig: Config) extends QScript {
   def init() {
     for (file <- configfiles) globalConfig.loadConfigFile(file)
     config = Config.mergeConfigs(globalConfig.getAsConfig("flexiprep"), globalConfig)
-    logger.debug(config)
     skipTrim = config.getAsBoolean("skiptrim", false)
     skipClip = config.getAsBoolean("skipclip", false)
     if (input_R1 == null) throw new IllegalStateException("Missing R1 on flexiprep module")
@@ -71,22 +72,22 @@ class Flexiprep(private var globalConfig: Config) extends QScript {
   }
   
   def getQualtype(fastqc:Fastqc): File = {
-    val fastqcToQualtype = new FastqcToQualtype(config)
-    fastqcToQualtype.fastqc_output = fastqc.output
-    var out: File = swapExt(outputDir, fastqc.fastqfile, "", ".qualtype.txt")
-    fastqcToQualtype.out = out
+    val fastqcToQualtype = new FastqcToQualtype(config) {
+      this.fastqc_output = fastqc.output
+      this.out = swapExt(outputDir, fastqc.fastqfile, "", ".qualtype.txt")
+    }
     add(fastqcToQualtype)
-    return out
+    return fastqcToQualtype.out
   }
   
   def getContams(fastqc:Fastqc): File = {
-    val fastqcToContams = new FastqcToContams(config)
-    fastqcToContams.fastqc_output = fastqc.output
-    var out: File = swapExt(outputDir, fastqc.fastqfile, "", ".contams.txt")
-    fastqcToContams.out = out
-    fastqcToContams.contams_file = fastqc.contaminants
+    val fastqcToContams = new FastqcToContams(config) {
+      this.fastqc_output = fastqc.output
+      this.out = swapExt(outputDir, fastqc.fastqfile, "", ".contams.txt")
+      this.contams_file = fastqc.contaminants
+    }
     add(fastqcToContams)
-    return out
+    return fastqcToContams.out
   }
   
   def runTrimClip(R1_in:File, outDir:String) : Map[String,File] = {
@@ -102,26 +103,29 @@ class Flexiprep(private var globalConfig: Config) extends QScript {
     if (paired) R2_ext = R2.getName().substring(R2.getName().lastIndexOf("."), R2.getName().size)
     
     if (!skipClip) { // Adapter clipping
-      val cutadapt_R1 = new Cutadapt(config)
-      cutadapt_R1.fastq_input = R1
-      cutadapt_R1.fastq_output = swapExt(outDir, R1, R1_ext, ".clip"+R1_ext)
-      if (outputFiles.contains("contams_R1")) cutadapt_R1.contams_file = outputFiles("contams_R1")
+      val cutadapt_R1 = new Cutadapt(config) {
+        this.fastq_input = R1
+        this.fastq_output = swapExt(outDir, R1, R1_ext, ".clip"+R1_ext)
+        if (outputFiles.contains("contams_R1")) this.contams_file = outputFiles("contams_R1")
+      }
       add(cutadapt_R1)
       R1 = cutadapt_R1.fastq_output
       if (paired) {
-        val cutadapt_R2 = new Cutadapt(config)
-        cutadapt_R2.fastq_input = R2
-        cutadapt_R2.fastq_output = swapExt(outDir, R2, R2_ext, ".clip"+R2_ext)
-        if (outputFiles.contains("contams_R2")) cutadapt_R2.contams_file = outputFiles("contams_R2")
+        val cutadapt_R2 = new Cutadapt(config) {
+          this.fastq_input = R2
+          this.fastq_output = swapExt(outDir, R2, R2_ext, ".clip"+R2_ext)
+          if (outputFiles.contains("contams_R2")) this.contams_file = outputFiles("contams_R2")
+        }
         add(cutadapt_R2)
         R2 = cutadapt_R2.fastq_output
-        val fastqSync = new FastqSync(config)
-        fastqSync.input_start_fastq = cutadapt_R1.fastq_input
-        fastqSync.input_R1 = cutadapt_R1.fastq_output
-        fastqSync.input_R2 = cutadapt_R2.fastq_output
-        fastqSync.output_R1 = swapExt(outDir, R1, ".clip"+R1_ext, ".clipsync"+R1_ext)
-        fastqSync.output_R2 = swapExt(outDir, R2, ".clip"+R2_ext, ".clipsync"+R2_ext)
-        fastqSync.output_stats = swapExt(outDir, R1, ".clip"+R1_ext, ".clipsync.stats")
+        val fastqSync = new FastqSync(config) {
+          this.input_start_fastq = cutadapt_R1.fastq_input
+          this.input_R1 = cutadapt_R1.fastq_output
+          this.input_R2 = cutadapt_R2.fastq_output
+          this.output_R1 = swapExt(outDir, R1, ".clip"+R1_ext, ".clipsync"+R1_ext)
+          this.output_R2 = swapExt(outDir, R2, ".clip"+R2_ext, ".clipsync"+R2_ext)
+          this.output_stats = swapExt(outDir, R1, ".clip"+R1_ext, ".clipsync.stats")
+        }
         add(fastqSync)
         R1 = fastqSync.output_R1
         R2 = fastqSync.output_R2
@@ -129,16 +133,17 @@ class Flexiprep(private var globalConfig: Config) extends QScript {
     }
     
     if (!skipTrim) { // Quality trimming
-      val sickle = new Sickle(config)
-      sickle.input_R1 = R1
-      sickle.output_R1 = swapExt(outDir, R1, R1_ext, ".trim"+R1_ext)
-      if (outputFiles.contains("qualtype_R1")) sickle.qualityTypeFile = outputFiles("qualtype_R1")
-      if (paired) {
-        sickle.input_R2 = R2
-        sickle.output_R2 = swapExt(outDir, R2, R2_ext, ".trim"+R2_ext)
-        sickle.output_singles = swapExt(outDir, R2, R2_ext, ".trim.singles"+R1_ext)
+      val sickle = new Sickle(config) {
+        this.input_R1 = R1
+        this.output_R1 = swapExt(outDir, R1, R1_ext, ".trim"+R1_ext)
+        if (outputFiles.contains("qualtype_R1")) this.qualityTypeFile = outputFiles("qualtype_R1")
+        if (paired) {
+          this.input_R2 = R2
+          this.output_R2 = swapExt(outDir, R2, R2_ext, ".trim"+R2_ext)
+          this.output_singles = swapExt(outDir, R2, R2_ext, ".trim.singles"+R1_ext)
+        }
+        this.output_stats = swapExt(outDir, R1, R1_ext, ".trim.stats")
       }
-      sickle.output_stats = swapExt(outDir, R1, R1_ext, ".trim.stats")
       add(sickle)
       R1 = sickle.output_R1
       if (paired) R2 = sickle.output_R2
@@ -180,4 +185,12 @@ class Flexiprep(private var globalConfig: Config) extends QScript {
       return zcatCommand.out
     } else return file
   }
-}
\ No newline at end of file
+  
+  override def onExecutionDone(jobs: Map[QFunction, JobRunInfo], success: Boolean) {
+    logger.info("Flexiprep is done")
+  }
+}
+
+object Flexiprep extends PipelineCommand {
+  override val src = "Flexiprep"
+}
diff --git a/gatk/nbactions.xml b/gatk/nbactions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..531ad188f8eb1ca9b6fd1a5933f353ac785859da
--- /dev/null
+++ b/gatk/nbactions.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>run</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.gatk.Gatk</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath nl.lumc.sasc.biopet.pipelines.gatk.Gatk</exec.args>
+                <exec.executable>java</exec.executable>
+                <jpda.listen>true</jpda.listen>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>profile</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.gatk.Gatk</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+    </actions>
diff --git a/gatk/pom.xml b/gatk/pom.xml
index 27b7d0332a1955735f3615230d792215b386117a..133eb8070fb84ec6897c33dbc9b8e2192df37a41 100644
--- a/gatk/pom.xml
+++ b/gatk/pom.xml
@@ -21,7 +21,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <sting.unpack.phase>prepare-package</sting.unpack.phase>
     <sting.shade.phase>package</sting.shade.phase>
-    <app.main.class>org.broadinstitute.sting.queue.QCommandLine</app.main.class>
+    <app.main.class>nl.lumc.sasc.biopet.pipelines.gatk.Gatk</app.main.class>
   </properties>
   
     <dependencies>
@@ -59,6 +59,20 @@
         </dependency>
     </dependencies>
     <build>
+        <resources>
+            <resource>
+                 <directory>src/main/java</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+            <resource>
+                 <directory>scripts</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <groupId>org.scala-tools</groupId>
diff --git a/gatk/src/main/java/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala b/gatk/src/main/java/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala
index 247b650bdb6ff49f60aa03ec33f1d7497b42fa1d..1d0b49b6e265c7f9e2f81c044f2fd0e67ed33bbd 100644
--- a/gatk/src/main/java/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala
+++ b/gatk/src/main/java/nl/lumc/sasc/biopet/pipelines/gatk/Gatk.scala
@@ -285,3 +285,7 @@ class Gatk(private var globalConfig: Config) extends QScript {
     return printReads.o
   }
 }
+
+object Gatk extends PipelineCommand {
+  override val src = "Gatk"
+}
diff --git a/mapping/nbactions.xml b/mapping/nbactions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..db645ba13e1fe46fffc0206373bde63b08f0b0d2
--- /dev/null
+++ b/mapping/nbactions.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>run</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.mapping.Mapping</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath nl.lumc.sasc.biopet.pipelines.mapping.Mapping</exec.args>
+                <exec.executable>java</exec.executable>
+                <jpda.listen>true</jpda.listen>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+        <action>
+            <actionName>profile</actionName>
+            <packagings>
+                <packaging>jar</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath nl.lumc.sasc.biopet.pipelines.mapping.Mapping</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.workingdir>/home/pjvan_thof/pipelines/test</exec.workingdir>
+            </properties>
+        </action>
+    </actions>
diff --git a/mapping/pom.xml b/mapping/pom.xml
index c9f34a0864a17cd25fcd36af3702be5c4c2a5acc..62a8acb927d2f24ff6a1a2b99dde8133a2e355a2 100644
--- a/mapping/pom.xml
+++ b/mapping/pom.xml
@@ -21,7 +21,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <sting.unpack.phase>prepare-package</sting.unpack.phase>
     <sting.shade.phase>package</sting.shade.phase>
-    <app.main.class>org.broadinstitute.sting.queue.QCommandLine</app.main.class>
+    <app.main.class>nl.lumc.sasc.biopet.pipelines.mapping.Mapping</app.main.class>
   </properties>
   
     <dependencies>
@@ -59,6 +59,20 @@
         </dependency>
     </dependencies>
     <build>
+        <resources>
+            <resource>
+                 <directory>src/main/java</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+            <resource>
+                 <directory>scripts</directory>
+                 <includes>
+                     <include>**/*</include>
+                 </includes>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <groupId>org.scala-tools</groupId>
diff --git a/mapping/src/main/java/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala b/mapping/src/main/java/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
index 3825a87364760db8310e022b0dd83b2f98609fce..73b181452c7bd294af76aa91c4c3e5f6a913058a 100644
--- a/mapping/src/main/java/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
+++ b/mapping/src/main/java/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
@@ -161,3 +161,7 @@ class Mapping(private var globalConfig: Config) extends QScript {
     return RG.substring(0, RG.lastIndexOf("\\t"))
   }
 }
+
+object Mapping extends PipelineCommand {
+  override val src = "Mapping"
+}