diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
index b116b36fb3abdaaff4015eb0e4479da190761f5d..8f88b3260ddd44ed69629bea12a4f4a46a592b8c 100644
--- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
+++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
@@ -2,11 +2,11 @@ package nl.lumc.sasc.biopet.extensions.clever
 
 import java.io.File
 
-import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction
+import nl.lumc.sasc.biopet.core.{ Reference, BiopetCommandLineFunction }
 import nl.lumc.sasc.biopet.core.config.Configurable
 import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
 
-class CleverCaller(val root: Configurable) extends BiopetCommandLineFunction {
+class CleverCaller(val root: Configurable) extends BiopetCommandLineFunction with Reference {
   executable = config("exe", default = "clever")
 
   private lazy val versionexecutable: File = config("version_exe", default = new File(executable).getParent + "/ctk-version")
@@ -23,10 +23,8 @@ class CleverCaller(val root: Configurable) extends BiopetCommandLineFunction {
   @Input(doc = "Reference")
   var reference: File = _
 
-  @Argument(doc = "Work directory")
-  var workDir: String = _
-
-  var cwd: String = _
+  var workDir: File = _
+  var cwd: File = _
 
   @Output(doc = "Clever VCF output")
   lazy val outputvcf: File = {
@@ -45,9 +43,10 @@ class CleverCaller(val root: Configurable) extends BiopetCommandLineFunction {
   var k: Boolean = config("k", default = false) // keep working directory
   var r: Boolean = config("r", default = false) // take read groups into account
 
-  override def beforeCmd() {
+  override def beforeGraph() {
+    super.beforeGraph()
     if (workDir == null) throw new Exception("Clever :: Workdirectory is not defined")
-    //    if (input.getName.endsWith(".sort.bam")) sorted = true
+    if (reference == null) reference = referenceFasta()
   }
 
   def cmdLine = required(executable) +
@@ -64,10 +63,9 @@ class CleverCaller(val root: Configurable) extends BiopetCommandLineFunction {
 }
 
 object CleverCaller {
-  def apply(root: Configurable, input: File, reference: File, svDir: String, runDir: String): CleverCaller = {
+  def apply(root: Configurable, input: File, svDir: File, runDir: File): CleverCaller = {
     val clever = new CleverCaller(root)
     clever.input = input
-    clever.reference = reference
     clever.cwd = svDir
     clever.workDir = runDir
     clever