diff --git a/classes/JDLCreator.py b/classes/JDLCreator.py
index 00d95563699f339ea46dd10e4bd9eed86086ab9f..ec11dbafeb716bd69c60bf5e4e4d69cc1f8b28b5 100755
--- a/classes/JDLCreator.py
+++ b/classes/JDLCreator.py
@@ -53,7 +53,7 @@ class JDLCreator(object):
     LINE_LOG = 'log = log/$(Process).log'
 
     def __init__(self, site_name='', executable='', wall_time=0, job_folder='.',
-                 extra_lines='', output_files='', arguments=''):
+                 extra_lines='', arguments=''):
         # types (str, str, int, str, list, str, list) -> None
         """Class to create JDL files for EKP HTCondor system."""
 
@@ -69,8 +69,8 @@ class JDLCreator(object):
         self._wall_time = int(wall_time)
         self._memory = 0
         self._job_folder = job_folder
-        self._output_files = output_files
-        self._input_files = ''
+        self._output_files = []
+        self._input_files = []
         self._remote_job = False
         if len(extra_lines) > 0:
             self._extra_lines = extra_lines
@@ -257,31 +257,43 @@ class JDLCreator(object):
     def output_files(self):
         # type: () -> str
         """Files or directories which should be transferred back by HTCondor."""
-        return self._output_files
+        return ','.join(self._output_files)
 
     @output_files.setter
     def output_files(self, file_string):
         # type: (str) -> None
-        self._output_files = file_string
+        if isinstance(file_string, list):
+            for line in file_string:
+                self.output_files = line
+        elif isinstance(file_string, (str, int, float)):
+            self._output_files.append(file_string)
+        else:
+            raise TypeError('Output file is not a string or a number.')
 
     def SetOutputFiles(self, file_string):
         # type: (str) -> None
-        self._output_files = file_string
+        self.output_files = file_string
 
     @property
     def input_files(self):
         # type: () -> str
         """Files or directories which should be transferred to workernode by HTCondor."""
-        return self._input_files
+        return ','.join(self._input_files)
 
     @input_files.setter
     def input_files(self, file_string):
         # type: (str) -> None
-        self._input_files = file_string
+        if isinstance(file_string, list):
+            for line in file_string:
+                self._input_files = line
+        elif isinstance(file_string, (str, int, float)):
+            self._input_files.append(file_string)
+        else:
+            raise TypeError('Output file is not a string or a number.')
 
     def SetInputFiles(self, file_string):
         # type: (str) -> None
-        self._input_files = file_string
+        self.input_files = file_string
 
     @property
     def remote_job(self):
@@ -334,11 +346,7 @@ class JDLCreator(object):
             jdl_content.append('docker_image = %s' % self._cloud_site.docker_image)
             # do docker stuff for exe
             jdl_content.append('executable = ./%s' % exe)
-            jdl_content.append('should_transfer_files = YES')
-            if self._input_files != '':
-                jdl_content.append('transfer_input_files = ' + self.executable + ',' + self._input_files)
-            else:
-                jdl_content.append('transfer_input_files = ' + self.executable)
+            self.input_files = './%s' % exe
         else:
             jdl_content.append('executable = %s' % exe)
 
@@ -347,8 +355,13 @@ class JDLCreator(object):
         jdl_content.append(self.LINE_ERROR)
         jdl_content.append(self.LINE_LOG)
 
-        # add line to transfer files back
-        jdl_content.append('transfer_output_files = "%s"' % self.output_files)
+        # Input and output files
+        if len(self._input_files) > 0 or len(self._output_files) > 0:
+            jdl_content.append('should_transfer_files = YES')
+        if len(self._input_files) > 0:
+            jdl_content.append('transfer_input_files = %s' % self.input_files)
+        if len(self._output_files) > 0:
+            jdl_content.append('transfer_output_files = %s' % self.output_files)
 
         # add environment variables
         jdl_content.append('getenv = True')