diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala
new file mode 100644
index 0000000000000000000000000000000000000000..392169043c9fa8e10852b4ff61694892c7531b3c
--- /dev/null
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala
@@ -0,0 +1,24 @@
+package nl.lumc.sasc.biopet.extensions.picard
+
+import java.io.File
+
+import nl.lumc.sasc.biopet.utils.config.Configurable
+import org.broadinstitute.gatk.utils.commandline.{ Output, Input }
+
+/**
+ * Created by sajvanderzeeuw on 6-10-15.
+ */
+class BuildBamIndex(val root: Configurable) extends Picard {
+
+  javaMainClass = new picard.sam.BuildBamIndex().getClass.getName
+
+  @Input(doc = "The input SAM or BAM files to analyze.", required = true)
+  var input: File = _
+
+  @Output(doc = "The output file to bam file to", required = true)
+  var output: File = _
+
+  override def cmdLine = super.cmdLine +
+    required("INPUT=", input, spaceSeparated = false) +
+    required("OUTPUT=", output, spaceSeparated = false)
+}
diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
index c8f9cf52007e9a74e344e3f78d74ec4ab1d2ac27..5df2a3a7b47f5771dcdbd033ef2c273ba70ed89f 100644
--- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
@@ -3,7 +3,7 @@ package nl.lumc.sasc.biopet.extensions.samtools
 import java.io.File
 
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import org.broadinstitute.gatk.utils.commandline.{Input, Output}
+import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
 /**
  * Created by pjvanthof on 22/09/15.
diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
index fca6e84ccd15bfd6af4c72723269e13afda7f13c..09e8bff4212602d0689ea4f43eeee947b29c870e 100644
--- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
@@ -28,7 +28,7 @@ class SamtoolsView(val root: Configurable) extends Samtools {
   @Output(doc = "output File")
   var output: File = null
 
-  var quality: Option[Int] = config("quality")
+  var q: Option[Int] = config("q")
   var b: Boolean = config("b", default = false)
   var h: Boolean = config("h", default = false)
   var f: List[String] = config("f", default = List.empty[String])
@@ -36,7 +36,7 @@ class SamtoolsView(val root: Configurable) extends Samtools {
 
   def cmdBase = required(executable) +
     required("view") +
-    optional("-q", quality) +
+    optional("-q", q) +
     repeat("-f", f) +
     repeat("-F", F) +
     conditional(b, "-b") +
diff --git a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
index 71b51067a73baaf49c7d1a095d13d1fa584e7e96..de37b352ecf8a9091ee67d1b455e85087156f642 100644
--- a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
+++ b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
@@ -18,11 +18,12 @@ package nl.lumc.sasc.biopet.pipelines.carp
 import java.io.File
 
 import nl.lumc.sasc.biopet.core._
+import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsView
 import nl.lumc.sasc.biopet.utils.config._
 import nl.lumc.sasc.biopet.core.summary.SummaryQScript
 import nl.lumc.sasc.biopet.extensions.Ln
 import nl.lumc.sasc.biopet.extensions.macs2.Macs2CallPeak
-import nl.lumc.sasc.biopet.extensions.picard.MergeSamFiles
+import nl.lumc.sasc.biopet.extensions.picard.{ BuildBamIndex, MergeSamFiles }
 import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics
 import nl.lumc.sasc.biopet.pipelines.bamtobigwig.Bam2Wig
 import nl.lumc.sasc.biopet.pipelines.mapping.Mapping
@@ -40,8 +41,16 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
 
   override def defaults = Map(
     "mapping" -> Map(
-      "skip_markduplicates" -> true,
+      "skip_markduplicates" -> false,
       "aligner" -> "bwa-mem"
+    ),
+    "samtoolsview" -> Map("q" -> 10)
+  )
+
+  override def fixedValues = Map(
+    "samtoolsview" -> Map(
+      "h" -> true,
+      "b" -> true
     )
   )
 
@@ -93,6 +102,7 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
     }
 
     val bamFile = createFile(".bam")
+    val bamFileFilter = createFile(".filter.bam")
     val controls: List[String] = config("control", default = Nil)
 
     def addJobs(): Unit = {
@@ -114,10 +124,29 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
       val bamMetrics = BamMetrics(qscript, bamFile, new File(sampleDir, "metrics"), sampleId = Some(sampleId))
       addAll(bamMetrics.functions)
       addSummaryQScript(bamMetrics)
+
+      val bamMetricsFilter = BamMetrics(qscript, bamFileFilter, new File(sampleDir, "metrics-filter"), sampleId = Some(sampleId))
+      addAll(bamMetricsFilter.functions)
+      bamMetricsFilter.summaryName = "bammetrics-filter"
+      addSummaryQScript(bamMetricsFilter)
+
       addAll(Bam2Wig(qscript, bamFile).functions)
+      addAll(Bam2Wig(qscript, bamFileFilter).functions)
+
+      val samtoolsView = new SamtoolsView(qscript)
+      samtoolsView.input = bamFile
+      samtoolsView.output = bamFileFilter
+      samtoolsView.b = true
+      samtoolsView.h = true
+      add(samtoolsView)
+
+      val buildBamIndex = new BuildBamIndex(qscript)
+      buildBamIndex.input = bamFileFilter
+      buildBamIndex.output = swapExt(bamFileFilter.getParent, bamFileFilter, ".bam", ".bai")
+      add(buildBamIndex)
 
       val macs2 = new Macs2CallPeak(qscript)
-      macs2.treatment = bamFile
+      macs2.treatment = bamFileFilter
       macs2.name = Some(sampleId)
       macs2.outputdir = sampleDir + File.separator + "macs2" + File.separator + sampleId + File.separator
       add(macs2)
@@ -155,8 +184,8 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
         if (!samples.contains(controlId))
           throw new IllegalStateException("For sample: " + sampleId + " this control: " + controlId + " does not exist")
         val macs2 = new Macs2CallPeak(this)
-        macs2.treatment = sample.bamFile
-        macs2.control = samples(controlId).bamFile
+        macs2.treatment = sample.bamFileFilter
+        macs2.control = samples(controlId).bamFileFilter
         macs2.name = Some(sampleId + "_VS_" + controlId)
         macs2.outputdir = sample.sampleDir + File.separator + "macs2" + File.separator + macs2.name.get + File.separator
         add(macs2)