diff --git a/fsl/utils/fslsub.py b/fsl/utils/fslsub.py
index a770cc623ad3cb880ed458ba679b9e84c1b4e5da..713826a8c26637cc99159abeda423b2b6e1fba82 100644
--- a/fsl/utils/fslsub.py
+++ b/fsl/utils/fslsub.py
@@ -98,7 +98,7 @@ def submit(command,
 
     :arg verbose:        If True, use verbose mode
 
-    :return:             tuple of submitted job ids
+    :return:             string of submitted job id
     """
 
     from fsl.utils.run import runfsl
@@ -202,10 +202,8 @@ def wait(job_ids):
     :arg job_ids: string or tuple of strings with jobs that should finish
                   before continuing
     """
-    if isinstance(job_ids, string_types):
-        job_ids = (job_ids, )
     start_time = time.time()
-    for job_id in job_ids:
+    for job_id in _flatten_job_ids(job_ids):
         log.debug('Waiting for job {}'.format(job_id))
         while len(info(job_id)) > 0:
             wait_time = min(max(1, (time.time() - start_time) / 3.), 20)
@@ -252,7 +250,7 @@ if name_type == 'module':
     func = getattr(import_module(name), func_name)
 elif name_type == 'script':
     # retrieves a function defined in the __main__ script
-    local_execute = {{'__name__': '__not_main__'}}
+    local_execute = {{'__name__': '__not_main__', '__file__': name}}
     exec(open(name, 'r').read(), local_execute)
     func = local_execute[func_name]
 else: