diff --git a/.gitignore b/.gitignore
index 8d5e63d5ed0b62e4beb62a58b9c1effa755e28ca..e65cac921452b5dffcf1fecd876eb08fa9a41936 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,10 @@
+# Project-related
 dependency-reduced-pom.xml
+/biopet-framework/src/main/resources/git.properties
+
+# gedit
 *~
+# Vim
 *.swp
-/biopet-framework/src/main/resources/git.properties
+# IntelliJ
+.idea/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..4b5075762ca96fec35e5c1f06f36c4a9a231aabb
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Biopet
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000000000000000000000000000000000000..48ac3c04c7313f14a442dd2956dcb283f9fd5b42
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <option name="DEFAULT_COMPILER" value="Javac" />
+    <resourceExtensions />
+    <wildcardResourcePatterns>
+      <entry name="!?*.java" />
+      <entry name="!?*.form" />
+      <entry name="!?*.class" />
+      <entry name="!?*.groovy" />
+      <entry name="!?*.scala" />
+      <entry name="!?*.flex" />
+      <entry name="!?*.kt" />
+      <entry name="!?*.clj" />
+    </wildcardResourcePatterns>
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="false">
+        <processorPath useClasspath="true" />
+      </profile>
+      <profile default="false" name="Maven default annotation processors profile" enabled="false">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <processorPath useClasspath="true" />
+        <module name="BiopetFramework" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>
+
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7bedf3377d40335424fd605124d4761390218bb
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+<component name="CopyrightManager">
+  <settings default="" />
+</component>
\ No newline at end of file
diff --git a/.idea/dictionaries/warindrarto.xml b/.idea/dictionaries/warindrarto.xml
new file mode 100644
index 0000000000000000000000000000000000000000..89d157168027c3ba9469689b2417fc37154747a7
--- /dev/null
+++ b/.idea/dictionaries/warindrarto.xml
@@ -0,0 +1,21 @@
+<component name="ProjectDictionaryState">
+  <dictionary name="warindrarto">
+    <words>
+      <w>arindrarto</w>
+      <w>biopet</w>
+      <w>chrom</w>
+      <w>cufflinks</w>
+      <w>exon</w>
+      <w>fastq</w>
+      <w>gentrap</w>
+      <w>gsnap</w>
+      <w>snvmix</w>
+      <w>tophat</w>
+      <w>transcriptome</w>
+      <w>varcaller</w>
+      <w>varscan</w>
+      <w>warindrarto</w>
+      <w>wibowo</w>
+    </words>
+  </dictionary>
+</component>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2aa2187f2a1ed212d1a19767bf0ce82aa6e03dd1
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
+    <file url="file://$PROJECT_DIR$/biopet-framework" charset="UTF-8" />
+  </component>
+</project>
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dcf891305fc38c52c53241424a15a7f8429c955f
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,16 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0" is_locked="false">
+    <option name="myName" value="Project Default" />
+    <option name="myLocal" value="false" />
+    <inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
+      <option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
+      <option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
+    </inspection_tool>
+    <inspection_tool class="MatchToPartialFunction" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
+      <option name="processCode" value="true" />
+      <option name="processLiterals" value="true" />
+      <option name="processComments" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b312839bf2e939fea3ebdef15630a4b33e57caf
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_baqend_bloom_filter_1_02.xml b/.idea/libraries/Maven__com_baqend_bloom_filter_1_02.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a08d14f4eb8ef4a4d8eb3ab6ef242b63e7000b28
--- /dev/null
+++ b/.idea/libraries/Maven__com_baqend_bloom_filter_1_02.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baqend:bloom-filter:1.02">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baqend/bloom-filter/1.02/bloom-filter-1.02.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baqend/bloom-filter/1.02/bloom-filter-1.02-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baqend/bloom-filter/1.02/bloom-filter-1.02-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_beust_jcommander_1_27.xml b/.idea/libraries/Maven__com_beust_jcommander_1_27.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f0f9060d98726f4254ecec1e77e5b203501c82c9
--- /dev/null
+++ b/.idea/libraries/Maven__com_beust_jcommander_1_27.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.beust:jcommander:1.27">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_github_julien_truffaut_monocle_core_2_11_0_5_0.xml b/.idea/libraries/Maven__com_github_julien_truffaut_monocle_core_2_11_0_5_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a6e5b1ee05fa235f4568b2e88f39d10a6d77a53
--- /dev/null
+++ b/.idea/libraries/Maven__com_github_julien_truffaut_monocle_core_2_11_0_5_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.julien-truffaut:monocle-core_2.11:0.5.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/julien-truffaut/monocle-core_2.11/0.5.0/monocle-core_2.11-0.5.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/julien-truffaut/monocle-core_2.11/0.5.0/monocle-core_2.11-0.5.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/julien-truffaut/monocle-core_2.11/0.5.0/monocle-core_2.11-0.5.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_github_scopt_scopt_2_10_3_2_0.xml b/.idea/libraries/Maven__com_github_scopt_scopt_2_10_3_2_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..adf0f2cb7b4815a14a861c861b17af0d0985ad94
--- /dev/null
+++ b/.idea/libraries/Maven__com_github_scopt_scopt_2_10_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.scopt:scopt_2.10:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/scopt/scopt_2.10/3.2.0/scopt_2.10-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/scopt/scopt_2.10/3.2.0/scopt_2.10-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/scopt/scopt_2.10/3.2.0/scopt_2.10-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4533c1ba79a2f6aad70eab0b302d97e0bfb41dda
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.code.gson:gson:2.2.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_guava_guava_17_0.xml b/.idea/libraries/Maven__com_google_guava_guava_17_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2a9069ca399f4895428f9c87f5dddd978dc31766
--- /dev/null
+++ b/.idea/libraries/Maven__com_google_guava_guava_17_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.guava:guava:17.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__io_argonaut_argonaut_2_11_6_1_M4.xml b/.idea/libraries/Maven__io_argonaut_argonaut_2_11_6_1_M4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fa8e4d1d2140be1bd2f4b8ce0e6459d6a6727b9a
--- /dev/null
+++ b/.idea/libraries/Maven__io_argonaut_argonaut_2_11_6_1_M4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.argonaut:argonaut_2.11:6.1-M4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/argonaut/argonaut_2.11/6.1-M4/argonaut_2.11-6.1-M4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/argonaut/argonaut_2.11/6.1-M4/argonaut_2.11-6.1-M4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/argonaut/argonaut_2.11/6.1-M4/argonaut_2.11-6.1-M4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_10.xml b/.idea/libraries/Maven__junit_junit_4_10.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ed8bf5fe7f8a4a5117ac81f4ce4364cb1ca7cef2
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_10.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: junit:junit:4.10">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_2.xml b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aa6a889052a2db3f805e9ec976fdce0ad9faad1d
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-pool2:2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml b/.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6f17aa773644a328b19420d5e184213a85b4065
--- /dev/null
+++ b/.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.beanshell:bsh:2.0b4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_biojava_biojava3_core_3_1_0.xml b/.idea/libraries/Maven__org_biojava_biojava3_core_3_1_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e2f8eda6a5c5d58e8f0f94726d849c76f71c8f5
--- /dev/null
+++ b/.idea/libraries/Maven__org_biojava_biojava3_core_3_1_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.biojava:biojava3-core:3.1.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-core/3.1.0/biojava3-core-3.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-core/3.1.0/biojava3-core-3.1.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-core/3.1.0/biojava3-core-3.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_biojava_biojava3_sequencing_3_1_0.xml b/.idea/libraries/Maven__org_biojava_biojava3_sequencing_3_1_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dc48c1bc9783c2c1cd947de313827a1bc870f4d9
--- /dev/null
+++ b/.idea/libraries/Maven__org_biojava_biojava3_sequencing_3_1_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.biojava:biojava3-sequencing:3.1.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-sequencing/3.1.0/biojava3-sequencing-3.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-sequencing/3.1.0/biojava3-sequencing-3.1.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/biojava/biojava3-sequencing/3.1.0/biojava3-sequencing-3.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_broadinstitute_gatk_gatk_queue_package_distribution_3_2.xml b/.idea/libraries/Maven__org_broadinstitute_gatk_gatk_queue_package_distribution_3_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1826010eaabafd74edf1ba8ebafca103fd5e24d5
--- /dev/null
+++ b/.idea/libraries/Maven__org_broadinstitute_gatk_gatk_queue_package_distribution_3_2.xml
@@ -0,0 +1,15 @@
+<component name="libraryTable">
+  <library name="Maven: org.broadinstitute.gatk:gatk-queue-package-distribution:3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/broadinstitute/gatk/gatk-queue-package-distribution/3.2/gatk-queue-package-distribution-3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/broadinstitute/gatk/gatk-queue-package-distribution/3.2/gatk-queue-package-distribution-3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/broadinstitute/gatk/gatk-queue-package-distribution/3.2/gatk-queue-package-distribution-3.2-sources.jar!/" />
+      <root url="file://$PROJECT_DIR$/../htsjdk/src/java" />
+      <root url="file://$PROJECT_DIR$/../htsjdk/src/tests/java" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..acdf44300b42ccd0a7dec6d5b31ed08c48e2b071
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.hamcrest:hamcrest-core:1.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_2.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2836c2667c06fa76a5ac44a674d2754926d0fd3f
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang.modules:scala-parser-combinators_2.11:1.0.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_2.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a53cbb1de6052595e4ea5b0b0b3cf9908ce26e4
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang.modules:scala-xml_2.11:1.0.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_1.xml b/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e9954c0ef454f81b4378971bbc11bba158503fe
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_1.xml
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang:scala-compiler-bundle:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar!/" />
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar!/" />
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_2.xml b/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2baaf42947e1577e6f4058f3c0ca1797eb6c07ac
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_scala_compiler_bundle_2_11_2.xml
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang:scala-compiler-bundle:2.11.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.jar!/" />
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar!/" />
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_2.xml b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4974624050ae58e9934ee891dcf7d7c92dd06127
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang:scala-library:2.11.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.2/scala-library-2.11.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.2/scala-library-2.11.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_2.xml b/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef190f1c4ffc8318d5d8164fc85b3457dfe3653a
--- /dev/null
+++ b/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scala-lang:scala-reflect:2.11.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scalatest_scalatest_2_11_2_2_1.xml b/.idea/libraries/Maven__org_scalatest_scalatest_2_11_2_2_1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f9b531f3518dd36dc37f1074e140c4a8121b7e1
--- /dev/null
+++ b/.idea/libraries/Maven__org_scalatest_scalatest_2_11_2_2_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scalatest:scalatest_2.11:2.2.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalatest/scalatest_2.11/2.2.1/scalatest_2.11-2.2.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalatest/scalatest_2.11/2.2.1/scalatest_2.11-2.2.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalatest/scalatest_2.11/2.2.1/scalatest_2.11-2.2.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_scalaz_scalaz_core_2_11_7_1_0.xml b/.idea/libraries/Maven__org_scalaz_scalaz_core_2_11_7_1_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c580f0594f1d9639ee664960bcd99689b6cfb36
--- /dev/null
+++ b/.idea/libraries/Maven__org_scalaz_scalaz_core_2_11_7_1_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.scalaz:scalaz-core_2.11:7.1.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalaz/scalaz-core_2.11/7.1.0/scalaz-core_2.11-7.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalaz/scalaz-core_2.11/7.1.0/scalaz-core_2.11-7.1.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/scalaz/scalaz-core_2.11/7.1.0/scalaz-core_2.11-7.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_testng_testng_6_8.xml b/.idea/libraries/Maven__org_testng_testng_6_8.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d6214c0cd6a81ba34622b59bb9c10851268d794
--- /dev/null
+++ b/.idea/libraries/Maven__org_testng_testng_6_8.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.testng:testng:6.8">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8/testng-6.8.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8/testng-6.8-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8/testng-6.8-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_6.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_6.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f8bd1980d563511f80d2e5cd3e903b81f9f1e70
--- /dev/null
+++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_6.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.yaml:snakeyaml:1.6">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.6/snakeyaml-1.6-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/Maven__redis_clients_jedis_2_5_1.xml b/.idea/libraries/Maven__redis_clients_jedis_2_5_1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d28363366b82a563ff8823880190ac6f4170599
--- /dev/null
+++ b/.idea/libraries/Maven__redis_clients_jedis_2_5_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: redis.clients:jedis:2.5.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.5.1/jedis-2.5.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.5.1/jedis-2.5.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.5.1/jedis-2.5.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/gatk_protected.xml b/.idea/libraries/gatk_protected.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4d7eff35cf918f2900a3e482ff5661e18ebb62f
--- /dev/null
+++ b/.idea/libraries/gatk_protected.xml
@@ -0,0 +1,20 @@
+<component name="libraryTable">
+  <library name="gatk-protected">
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/../gatk-protected" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-queue/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-utils/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-engine/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/external-example/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/external-example/src/test/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-tools-public/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-tools-public/src/test/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/public/gatk-queue-extensions-generator/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/protected/gatk-tools-protected/src/main/java" />
+      <root url="file://$PROJECT_DIR$/../gatk-protected/protected/gatk-tools-protected/src/test/java" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccf88d1b84fcdeddbef86f014b7292d010c6e432
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5aa61dd9d9328ee604f7cc9738baabbaae40580
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/Biopet.iml" filepath="$PROJECT_DIR$/Biopet.iml" />
+      <module fileurl="file://$PROJECT_DIR$/biopet-framework/BiopetFramework.iml" filepath="$PROJECT_DIR$/biopet-framework/BiopetFramework.iml" />
+    </modules>
+  </component>
+</project>
+
diff --git a/.idea/scala_settings.xml b/.idea/scala_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..37f2c15e9625a132677ad63ad09241d8acabefff
--- /dev/null
+++ b/.idea/scala_settings.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ScalaProjectSettings">
+    <option name="inProcessMode" value="false" />
+    <option name="intInjectionMapping">
+      <map>
+        <entry key="xml" value="XML" />
+      </map>
+    </option>
+  </component>
+</project>
+
diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..922003b8433bcad6ce9778a37628d738faa26389
--- /dev/null
+++ b/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+  <state>
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b0002030884f78f1562177d81eb2f42c5acbd43
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c80f2198b5f6863fd489ec8ac6c40a50ac1f7b30
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
+
diff --git a/Biopet.iml b/Biopet.iml
new file mode 100644
index 0000000000000000000000000000000000000000..02d0bed78622af5b387d7774db3539c061857363
--- /dev/null
+++ b/Biopet.iml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+
diff --git a/biopet-framework/BiopetFramework.iml b/biopet-framework/BiopetFramework.iml
new file mode 100644
index 0000000000000000000000000000000000000000..7d46545ae978871a9ec99087cdcadcd599b616de
--- /dev/null
+++ b/biopet-framework/BiopetFramework.iml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="scala" name="Scala">
+      <configuration>
+        <option name="compilerLibraryLevel" value="Project" />
+        <option name="compilerLibraryName" value="Maven: org.scala-lang:scala-compiler-bundle:2.11.2" />
+        <option name="compilerOptions" value="-dependencyfile $MODULE_DIR$/target/.scala_dependencies" />
+        <option name="languageLevel" value="Scala 2.11" />
+        <option name="vmOptions" value="" />
+      </configuration>
+    </facet>
+    <facet type="Python" name="Python">
+      <configuration sdkName="" />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/scala" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/scala" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/scripts" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="com.twitter:algebird-core_2.10:0.8.1" level="project" />
+    <orderEntry type="library" name="gatk-protected" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.testng:testng:6.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.10" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.beanshell:bsh:2.0b4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.beust:jcommander:1.27" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.yaml:snakeyaml:1.6" level="project" />
+    <orderEntry type="library" name="Maven: org.scalatest:scalatest_2.11:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.11.2" level="project" />
+    <orderEntry type="library" name="Maven: org.scala-lang:scala-reflect:2.11.2" level="project" />
+    <orderEntry type="library" name="Maven: org.scala-lang.modules:scala-xml_2.11:1.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.broadinstitute.gatk:gatk-queue-package-distribution:3.2" level="project" />
+    <orderEntry type="library" name="Maven: io.argonaut:argonaut_2.11:6.1-M4" level="project" />
+    <orderEntry type="library" name="Maven: org.scalaz:scalaz-core_2.11:7.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.scala-lang.modules:scala-parser-combinators_2.11:1.0.2" level="project" />
+    <orderEntry type="library" name="Maven: com.github.julien-truffaut:monocle-core_2.11:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.biojava:biojava3-core:3.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.biojava:biojava3-sequencing:3.1.0" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:17.0" level="project" />
+    <orderEntry type="library" name="Maven: com.baqend:bloom-filter:1.02" level="project" />
+    <orderEntry type="library" name="Maven: redis.clients:jedis:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.github.scopt:scopt_2.10:3.2.0" level="project" />
+  </component>
+</module>
+
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala
index af0d91dff9b5434d0f17c22193655a09007e215e..0b377b8800ae297bc5bcc3d9a14a7f4b5679e281 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala
@@ -25,7 +25,10 @@ object BiopetExecutable {
       nl.lumc.sasc.biopet.tools.CheckAllelesVcfInBam,
       nl.lumc.sasc.biopet.tools.VcfToTsv,
       nl.lumc.sasc.biopet.tools.VcfFilter,
-      nl.lumc.sasc.biopet.tools.FindRepeatsPacBio)
+      nl.lumc.sasc.biopet.tools.FindRepeatsPacBio,
+      nl.lumc.sasc.biopet.tools.BedToInterval,
+      nl.lumc.sasc.biopet.tools.MpileupToVcf,
+      nl.lumc.sasc.biopet.tools.FastqSplitter)
   )
   
   /**
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
index 419c5ce12fdc6b211073bdabf53f7c46faffb5f8..a8b3daf680e02d130ed10c857c27114c918a6c21 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
@@ -8,6 +8,7 @@ import scala.collection.JavaConversions._
 import java.io.File
 import nl.lumc.sasc.biopet.extensions.gatk.{ CombineVariants, CombineGVCFs }
 import nl.lumc.sasc.biopet.extensions.picard.AddOrReplaceReadGroups
+import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics
 import nl.lumc.sasc.biopet.pipelines.mapping.Mapping
 import org.broadinstitute.gatk.queue.QScript
 import org.broadinstitute.gatk.utils.commandline.{ Argument }
@@ -195,6 +196,7 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri
         } else throw new IllegalStateException("Readgroup sample and/or library of input bamfile is not correct, file: " + bamFile + 
             "\nPossible to set 'correct_readgroups' to true on config to automatic fix this")
       }
+      addAll(BamMetrics(this, bamFile, runDir + "metrics/").functions)
       
       libraryOutput.mappedBamFile = bamFile
     } else logger.error("Sample: " + sampleID + ": No R1 found for run: " + runConfig)
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/BedToInterval.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/BedToInterval.scala
index 7b8e5003762f8c6d408b8a6f6fd31ec765958268..0a8cbdb3accf11ef641708b5a2dd4ac44f910467 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/BedToInterval.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/BedToInterval.scala
@@ -4,6 +4,7 @@ import htsjdk.samtools.SAMFileReader
 import htsjdk.samtools.SAMSequenceRecord
 import java.io.File
 import nl.lumc.sasc.biopet.core.BiopetJavaCommandLineFunction
+import nl.lumc.sasc.biopet.core.ToolCommand
 import nl.lumc.sasc.biopet.core.config.Configurable
 import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 import java.io.PrintWriter
@@ -27,7 +28,7 @@ class BedToInterval(val root: Configurable) extends BiopetJavaCommandLineFunctio
   override def commandLine = super.commandLine + required(input) + required(bamFile) + required(output)
 }
 
-object BedToInterval {
+object BedToInterval extends ToolCommand {
   def apply(root: Configurable, inputBed: File, inputBam: File, outputDir: String): BedToInterval = {
     val bedToInterval = new BedToInterval(root)
     bedToInterval.input = inputBed
@@ -44,13 +45,25 @@ object BedToInterval {
     return bedToInterval
   }
 
+  case class Args (inputFile:File = null, outputFile:File = null) extends AbstractArgs
+
+  class OptParser extends AbstractOptParser {
+    opt[File]('I', "inputFile") required() valueName("<file>") action { (x, c) =>
+      c.copy(inputFile = x) } text("out is a required file property")
+    opt[File]('o', "output") required() valueName("<file>") action { (x, c) =>
+      c.copy(outputFile = x) } text("out is a required file property")
+  }
+  
   /**
    * @param args the command line arguments
    */
   def main(args: Array[String]): Unit = {
-    val writer = new PrintWriter(args(2))
+    val argsParser = new OptParser
+    val commandArgs: Args = argsParser.parse(args, Args()) getOrElse sys.exit(1)
+    
+    val writer = new PrintWriter(commandArgs.outputFile)
 
-    val inputSam = new SAMFileReader(new File(args(1)))
+    val inputSam = new SAMFileReader(commandArgs.inputFile)
     val refs = for (SQ <- inputSam.getFileHeader.getSequenceDictionary.getSequences.toArray) yield {
       val record = SQ.asInstanceOf[SAMSequenceRecord]
       writer.write("@SQ\tSN:" + record.getSequenceName + "\tLN:" + record.getSequenceLength + "\n")
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/FastqSplitter.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/FastqSplitter.scala
index 66cb83cc5d32c3f597bcf9166a6714d96bbece93..c59d8a2464797f03eca4e0f7b2d6c3e0965ab624 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/FastqSplitter.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/FastqSplitter.scala
@@ -4,6 +4,7 @@ import java.io.{ BufferedInputStream, File, FileInputStream, PrintWriter }
 import java.util.zip.GZIPInputStream
 import nl.lumc.sasc.biopet.core.BiopetJavaCommandLineFunction
 import scala.io.Source
+import nl.lumc.sasc.biopet.core.ToolCommand
 import nl.lumc.sasc.biopet.core.config.Configurable
 import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
@@ -19,24 +20,34 @@ class FastqSplitter(val root: Configurable) extends BiopetJavaCommandLineFunctio
   override val defaultVmem = "8G"
   memoryLimit = Option(4.0)
 
-  override def commandLine = super.commandLine + required(input) + repeat(output)
+  override def commandLine = super.commandLine + required("-I", input) + repeat("-o", output)
 }
 
-object FastqSplitter {
+object FastqSplitter extends ToolCommand {
+  case class Args (inputFile:File = null, outputFile:List[File] = Nil) extends AbstractArgs
+
+  class OptParser extends AbstractOptParser {
+    opt[File]('I', "inputFile") required() valueName("<file>") action { (x, c) =>
+      c.copy(inputFile = x) } text("out is a required file property")
+    opt[File]('o', "output") required() unbounded() valueName("<file>") action { (x, c) =>
+      c.copy(outputFile = x :: c.outputFile) } text("out is a required file property")
+  }
+  
   /**
    * @param args the command line arguments
    */
   def main(args: Array[String]): Unit = {
+    val argsParser = new OptParser
+    val commandArgs: Args = argsParser.parse(args, Args()) getOrElse sys.exit(1)  
+    
     val groupsize = 100
-    val input = new File(args.head)
-    val output: Array[PrintWriter] = new Array[PrintWriter](args.tail.size)
-    for (t <- 1 to args.tail.size) output(t - 1) = new PrintWriter(args(t))
+    val output = for (file <- commandArgs.outputFile) yield new PrintWriter(file)
     val inputStream = {
-      if (input.getName.endsWith(".gz") || input.getName.endsWith(".gzip")) Source.fromInputStream(
+      if (commandArgs.inputFile.getName.endsWith(".gz") || commandArgs.inputFile.getName.endsWith(".gzip")) Source.fromInputStream(
         new GZIPInputStream(
           new BufferedInputStream(
-            new FileInputStream(input)))).bufferedReader
-      else Source.fromFile(input).bufferedReader
+            new FileInputStream(commandArgs.inputFile)))).bufferedReader
+      else Source.fromFile(commandArgs.inputFile).bufferedReader
     }
     while (inputStream.ready) {
       for (writter <- output) {
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/MpileupToVcf.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/MpileupToVcf.scala
index 8cc95f6733d351a25751dba309075a36248cb04a..a407a64de28c47de0a2c53033793a4b3c4f15a5e 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/MpileupToVcf.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/MpileupToVcf.scala
@@ -3,6 +3,7 @@ package nl.lumc.sasc.biopet.tools
 import java.io.File
 import java.io.PrintWriter
 import nl.lumc.sasc.biopet.core.BiopetJavaCommandLineFunction
+import nl.lumc.sasc.biopet.core.ToolCommand
 import nl.lumc.sasc.biopet.core.config.Configurable
 import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsMpileup
 import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
@@ -50,46 +51,47 @@ class MpileupToVcf(val root: Configurable) extends BiopetJavaCommandLineFunction
     } else "") + 
       super.commandLine + 
       required("-o", output) + 
-      optional("-minDP", minDP) + 
-      optional("-minAP", minAP) +
-      optional("-homoFraction", homoFraction) +
-      optional("-ploidy", ploidy) +
-      required("-sample", sample) + 
+      optional("--minDP", minDP) + 
+      optional("--minAP", minAP) +
+      optional("--homoFraction", homoFraction) +
+      optional("--ploidy", ploidy) +
+      required("--sample", sample) + 
       (if (inputBam == null) required("-I", inputMpileup) else "")
   }
 }
 
-object MpileupToVcf {
-  var input: File = _
-  var output: File = _
-  var sample: String = _
-  var minDP = 8
-  var minAP = 2
-  var homoFraction = 0.8
-  var ploidy = 2
+object MpileupToVcf extends ToolCommand {
+  case class Args (input:File = null, output:File = null, sample:String = null, minDP:Int = 8, minAP:Int = 2, 
+                   homoFraction:Double = 0.8, ploidy:Int = 2) extends AbstractArgs
+
+  class OptParser extends AbstractOptParser {
+    opt[File]('I', "input") valueName("<file>") action { (x, c) =>
+      c.copy(input = x) }  text("input, default is stdin")
+    opt[File]('o', "output") required() valueName("<file>") action { (x, c) =>
+      c.copy(output = x) } text("out is a required file property")
+    opt[String]('s', "sample") required() action { (x, c) =>
+      c.copy(sample = x) }
+    opt[Int]("minDP") required() action { (x, c) =>
+      c.copy(minDP = x) }
+    opt[Int]("minAP") required() action { (x, c) =>
+      c.copy(minAP = x) }
+    opt[Double]("homoFraction") required() action { (x, c) =>
+      c.copy(homoFraction = x) }
+    opt[Int]("ploidy") required() action { (x, c) =>
+      c.copy(ploidy = x) }
+  }
   
   /**
    * @param args the command line arguments
    */
   def main(args: Array[String]): Unit = {
+    val argsParser = new OptParser
+    val commandArgs: Args = argsParser.parse(args, Args()) getOrElse sys.exit(1)
+    
     import scala.collection.mutable.Map
-    for (t <- 0 until args.size) {
-      args(t) match {
-        case "-I" => input = new File(args(t+1))
-        case "-o" => output = new File(args(t+1))
-        case "-minDP" => minDP = args(t+1).toInt
-        case "-minAP" => minAP = args(t+1).toInt
-        case "-sample" => sample = args(t+1)
-        case "-homoFraction" => homoFraction = args(t+1).toDouble
-        case "-ploidy" => ploidy = args(t+1).toInt
-        case _ =>
-      }
-    }
-    if (input != null && !input.exists) throw new IllegalStateException("Input file does not exist")
-    if (output == null) throw new IllegalStateException("Output file not found, use -o")
-    if (sample == null) throw new IllegalStateException("sample not given, pls use -sample")
+    if (commandArgs.input != null && !commandArgs.input.exists) throw new IllegalStateException("Input file does not exist")
         
-    val writer = new PrintWriter(output)
+    val writer = new PrintWriter(commandArgs.output)
     writer.println("##fileformat=VCFv4.1")
     writer.println("##INFO=<ID=DP,Number=1,Type=Integer,Description=\"Total Depth\">")
     writer.println("##INFO=<ID=AF,Number=A,Type=Float,Description=\"Allele Frequency, for each ALT allele, in the same order as listed\">")
@@ -101,8 +103,8 @@ object MpileupToVcf {
     writer.println("##FORMAT=<ID=AFC,Number=A,Type=Integer,Description=\"Alternetive Forward Reads\">")
     writer.println("##FORMAT=<ID=ARC,Number=A,Type=Integer,Description=\"Alternetive Reverse Reads\">")
     writer.println("##FORMAT=<ID=GT,Number=1,Type=String,Description=\"Genotype\">")
-    writer.println("#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t" + sample)
-    val inputStream = if (input != null) Source.fromFile(input).getLines else Source.stdin.getLines
+    writer.println("#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t" + commandArgs.sample)
+    val inputStream = if (commandArgs.input != null) Source.fromFile(commandArgs.input).getLines else Source.stdin.getLines
     class Counts(var forward:Int, var reverse:Int)
     for (line <- inputStream; 
          val values = line.split("\t");
@@ -166,7 +168,7 @@ object MpileupToVcf {
       format += ("RFC" -> counts(ref.toUpperCase).forward.toString)
       format += ("RRC" -> counts(ref.toUpperCase).reverse.toString)
       format += ("AD" -> (counts(ref.toUpperCase).forward + counts(ref.toUpperCase).reverse).toString)
-      if (reads >= minDP) for ((key, value) <- counts if key != ref.toUpperCase if value.forward+value.reverse >= minAP) {
+      if (reads >= commandArgs.minDP) for ((key, value) <- counts if key != ref.toUpperCase if value.forward+value.reverse >= commandArgs.minAP) {
         alt += key
         format += ("AD" -> (format("AD") + "," + (value.forward + value.reverse).toString))
         format += ("AFC" -> ( (if (format.contains("AFC")) format("AFC") + "," else "") + value.forward))
@@ -180,13 +182,13 @@ object MpileupToVcf {
         var left = reads - dels
         val gt = ArrayBuffer[Int]()
         
-        for (p <- 0 to alt.size if gt.size < ploidy) {
+        for (p <- 0 to alt.size if gt.size < commandArgs.ploidy) {
           var max = -1
           for (a <- 0 until ad.length if ad(a) > (if (max >= 0) ad(max) else -1) && !gt.exists(_ == a)) max = a
           val f = ad(max).toDouble / left
-          for (a <- 0 to floor(f).toInt if gt.size < ploidy) gt.append(max)
-          if (f - floor(f) >= homoFraction) {
-            for (b <- p to ploidy if gt.size < ploidy) gt.append(max)
+          for (a <- 0 to floor(f).toInt if gt.size < commandArgs.ploidy) gt.append(max)
+          if (f - floor(f) >= commandArgs.homoFraction) {
+            for (b <- p to commandArgs.ploidy if gt.size < commandArgs.ploidy) gt.append(max)
           }
           left -= ad(max)
         }