diff --git a/chipathlon/conf.py b/chipathlon/conf.py
index fdd8697b4f1cf52e9ef40dc2231aa8ef5e8dd37e..c0a961f3f66f129c94d63b50bb65c9b9d0b225bf 100644
--- a/chipathlon/conf.py
+++ b/chipathlon/conf.py
@@ -42,7 +42,6 @@ peak_tools = [
 
 executables = [
     "bedtools",
-    "bamtools",
     "samtools",
     "idr",
     "picard",
@@ -52,7 +51,8 @@ executables = [
     "gem",
     "peakranger",
     "MUSIC",
-    "CCAT"    
+    "CCAT",
+    "run_spp_nodups"
 ]
 
 # Peak_type validation
diff --git a/chipathlon/workflow.py b/chipathlon/workflow.py
index a722ba87b4c2893a26bfc8c6ee2eb2a2036f8936..d13cded8bdae653fe99aba9cbf9b305e50c9ad5f 100644
--- a/chipathlon/workflow.py
+++ b/chipathlon/workflow.py
@@ -36,9 +36,9 @@ class Workflow(object):
     :type username: str
     :param password: The password to authenticate for MongoDB access.
     :type password: str
-    :param execute_sites: A list of sites to submit jobs to.  These sites should
+    :param execute_site: A list of sites to submit jobs to.  These sites should
         be defined in the configuration file.
-    :type execute_sites: list
+    :type execute_site: list
     :param output_site: The output site to transfer files to.  This site should
         be defined in the configuration file.
     :type output_site: str
@@ -164,7 +164,7 @@ class Workflow(object):
         return
 
     def _add_executable(self, name, path, os_type="linux", arch="x86_64", site="local"):
-        self.executables[name] = Executable(name=name, os=os_type, arch=arch)
+        self.executables[name] = Executable(name=name, os=os_type.lower(), arch=arch)
         self.executables[name].addPFN(PFN(os.path.join("file://", path), site))
         self.dax.addExecutable(self.executables[name])
         if self.debug:
@@ -173,7 +173,8 @@ class Workflow(object):
 
     def _load_executables(self, os_type="linux", arch="x86_64"):
         # Load actual executables don't need no wrappers
-        for executable in executables:
+        for executable in chipathlon.conf.executables:
+            found = False
             for install_path in self.config["install_paths"]:
                 if os.path.isfile(os.path.join(install_path, executable)):
                     self._add_executable(
@@ -183,8 +184,10 @@ class Workflow(object):
                         arch=self.config["sites"][self.execute_site].get("arch", "x86_64"),
                         os_type=self.config["sites"][self.execute_site].get("os", "linux")
                     )
+                    found = True
                     break
-            self.errors.append("Could not find executable %s" % (executable,))
+            if not found:
+                self.errors.append("Could not find executable %s" % (executable,))
         # Load actual scripts
         for root, dirs, files in os.walk("%s/%s" % (os.path.dirname(os.path.realpath(__file__)), chipathlon.conf.job_scripts)):
             for f in files:
@@ -328,7 +331,7 @@ class Workflow(object):
                     --randomdir \\
                     """ % (
                         self.config.properties_file,
-                        ",".join(self.execute_sites),
+                        self.execute_site,
                         self.output_site,
                         os.path.join(self.base_path, "work"),
                         os.path.join(self.base_path, "input/chipathlon.dax")