diff --git a/xos/synchronizers/onboarding/xosbuilder.py b/xos/synchronizers/onboarding/xosbuilder.py
index 9e3c2bb..4236f74 100644
--- a/xos/synchronizers/onboarding/xosbuilder.py
+++ b/xos/synchronizers/onboarding/xosbuilder.py
@@ -47,13 +47,14 @@
         manifest = []
         manifest_lines = file(fn).readlines()
         manifest_lines = [x.strip() for x in manifest_lines]
-        manifest_lines = [x for x in manifest.lines if x]
+        manifest_lines = [x for x in manifest_lines if x]
         for line in manifest_lines:
-            url_parts = urlsplit(scr.full_url)
-            url_parts.path = os.path.join(os.path.join(*os.path.split(url_parts).path[:-1]),line)
-            url = urlparse.urlunsplit(url_parts)
+            url_parts = urlparse.urlsplit(scr.full_url)
+            new_path = os.path.join(os.path.join(*os.path.split(url_parts.path)[:-1]),line)
+            url = urlparse.urlunsplit( (url_parts.scheme, url_parts.netloc, new_path, url_parts.query, url_parts.fragment) )
 
             build_fn = os.path.join(self.get_dest_dir(scr), line)
+            download_fn = os.path.join(self.build_dir, build_fn)
 
             manifest.append( (url, download_fn, build_fn) )
         return manifest
@@ -65,11 +66,15 @@
         obj = urllib2.urlopen(url)
         file(dest_fn,"w").write(obj.read())
 
+        # make python files executable
+        if dest_fn.endswith(".py"): # and contents.startswith("#!"):
+            os.chmod(dest_fn, 0755)
+
     def download_resource(self, scr):
         if scr.format == "manifest":
             manifest_fn = self.get_download_fn(scr)
             self.download_file(scr.full_url, manifest_fn)
-            mainfest = self.read_manifest(scr, manifest_fn)
+            manifest = self.read_manifest(scr, manifest_fn)
             for (url, download_fn, build_fn) in manifest:
                 self.download_file(url, download_fn)
         else:
@@ -137,7 +142,7 @@
         dockerfile_fn = "Dockerfile.%s" % controller.name
         dockerfile = ["FROM %s" % self.source_sync_image]
         dockerfile = dockerfile + lines
-        file(os.path.join(self.build_dir, dockerfile_fn), "w").writelines(dockerfile)
+        file(os.path.join(self.build_dir, dockerfile_fn), "w").write("\n".join(dockerfile)+"\n")
 
         return {"dockerfile_fn": dockerfile_fn,
                 "docker_image_name": "xosproject/xos-synchronizer-%s" % controller.name}
