diff --git a/chipathlon/db.py b/chipathlon/db.py
new file mode 100644
index 0000000000000000000000000000000000000000..76c2c8a29443c6ca5c73d795fd2fb0ae884b3f18
--- /dev/null
+++ b/chipathlon/db.py
@@ -0,0 +1,3 @@
+from pymongo import MongoClient
+
+def setup
diff --git a/chipathlon/jobs/bwa_align_paired.yaml b/chipathlon/jobs/bwa_align_paired.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..92e7bb57a60c19d41256a70d50258831dfbfabde
--- /dev/null
+++ b/chipathlon/jobs/bwa_align_paired.yaml
@@ -0,0 +1,31 @@
+bwa_align_paired:
+  inputs:
+    - fna
+    - fastq
+    - fastq
+  outputs:
+    - sam
+  arguments:
+    - "-M":
+      changeable: false
+      required: true
+      value: false
+    - "-t":
+      changeable: true
+      required: false
+      default: 1
+      value: true
+    - "$inputs.0":
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.1":
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.2":
+      changeable: false
+      required: true
+      value: false
+  walltime: 2000
+  memory: 2000
diff --git a/chipathlon/jobs/bwa_align_single.yaml b/chipathlon/jobs/bwa_align_single.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d911a43314c150ce6ad0ca22d73f2a0ad5430806
--- /dev/null
+++ b/chipathlon/jobs/bwa_align_single.yaml
@@ -0,0 +1,42 @@
+bwa_align_single:
+  inputs:
+    - fna
+    - fastq
+  outputs:
+    - sai
+  command: bwa
+  arguments:
+    - aln:
+        changeable: false
+        required: true
+        value: false
+    - "-q":
+        changeable: true
+        required: false
+        default: 5
+        value: true
+    - "-l":
+        changeable: true
+        required: false
+        default: 32
+        value: true
+    - "-k":
+        changeable: true
+        required: false
+        default: 2
+        value: true
+    - "-t":
+        changeable: true
+        required: false
+        default: 1
+        value: true
+    - "$inputs.0":
+        changeable: false
+        required: true
+        value: false
+    - "$inputs.1":
+        changeable: false
+        required: true
+        value: false
+  walltime: 2000
+  memory: 2000
diff --git a/chipathlon/jobs/bwa_sai_to_sam.yaml b/chipathlon/jobs/bwa_sai_to_sam.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..dc737638fede52deeed731cb4d720ffaff573d25
--- /dev/null
+++ b/chipathlon/jobs/bwa_sai_to_sam.yaml
@@ -0,0 +1,27 @@
+bwa_sai_to_sam:
+  inputs:
+    - fna
+    - sai
+    - fastq
+  outputs:
+    - sam
+  command: bwa
+  arguments:
+    - samse:
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.0":
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.1":
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.2":
+      changeable: false
+      required: true
+      value: false
+  walltime: 2000
+  memory: 2000
diff --git a/chipathlon/jobs/samtools_sam_to_bam.yaml b/chipathlon/jobs/samtools_sam_to_bam.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b7580ea215d1ba20331c1ec82d54b88e26912c10
--- /dev/null
+++ b/chipathlon/jobs/samtools_sam_to_bam.yaml
@@ -0,0 +1,20 @@
+samtools_sam_to_bam:
+  inputs:
+    - sam
+  outputs:
+    - bam
+  arguments:
+    - view:
+      changeable: false
+      required: true
+      value: false
+    - "-bS"
+      changeable: false
+      required: true
+      value: false
+    - "$inputs.0"
+      changeable: false
+      required: true
+      value: false
+  walltime: 2000
+  memory: 2000
diff --git a/chipathlon/utils.py b/chipathlon/utils.py
index 0d201ca00d142b5cf14ed56d51b2704876b48e63..1ac0ec0db8dec767bb9a02a72df5b9362ff5a1d3 100644
--- a/chipathlon/utils.py
+++ b/chipathlon/utils.py
@@ -1,8 +1,8 @@
 import sys
 
-def progress(current, end):
+def progress(current, end, length = 20):
     percent = float(current) / end
-    hashes = "#" * int(round(percent * 20))
-    spaces = " " * (20 - len(hashes))
+    hashes = "#" * int(round(percent * length))
+    spaces = " " * (length - len(hashes))
     sys.stdout.write("\rProcessed %s / %s entries. [%s] %s%%" % (current, end, hashes + spaces, int(round(percent * 100))))
     sys.stdout.flush()