diff --git a/netrender/__init__.py b/netrender/__init__.py
index 5ae4b774139bde04a2135fc3e01fca2f1e427934..3e7c6e7a2737f9b9af3db52dfd22c38da057881b 100644
--- a/netrender/__init__.py
+++ b/netrender/__init__.py
@@ -21,7 +21,7 @@
 bl_info = {
     "name": "Network Renderer",
     "author": "Martin Poirier",
-    "version": (1, 3),
+    "version": (1, 4),
     "blender": (2, 5, 6),
     "api": 35011,
     "location": "Render > Engine > Network Render",
diff --git a/netrender/client.py b/netrender/client.py
index b992f37d914643e708ad0fe9f65ce760dbbc5061..7b43b0fcfc2e41b5d4734de0871af97e649ca5e5 100644
--- a/netrender/client.py
+++ b/netrender/client.py
@@ -101,7 +101,12 @@ def fillCommonJobSettings(job, job_name, netsettings):
 
     job.chunks = netsettings.chunks
     job.priority = netsettings.priority
-    
+
+    if netsettings.job_render_engine == "OTHER":
+        job.render = netsettings.job_render_engine_other
+    else:
+        job.render = netsettings.job_render_engine
+     
     if netsettings.job_type == "JOB_BLENDER":
         job.type = netrender.model.JOB_BLENDER
     elif netsettings.job_type == "JOB_PROCESS":
@@ -225,7 +230,7 @@ def clientSendJobBlender(conn, scene, anim = False):
                 addPointCache(job, object, modifier.point_cache, default_path)
             elif modifier.type == "SOFT_BODY":
                 addPointCache(job, object, modifier.point_cache, default_path)
-            elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN":
+            elif modifier.type == "SMOKE" and modifier.smoke_type == "DOMAIN":
                 addPointCache(job, object, modifier.domain_settings.point_cache, default_path)
             elif modifier.type == "MULTIRES" and modifier.is_external:
                 file_path = bpy.path.abspath(modifier.filepath)
diff --git a/netrender/master.py b/netrender/master.py
index c2f46c17fa67bb496039d63e9f6d7d90abbc5e1f..b2a58b3fbed114a08b9a16dc4fd8e4cf7a86a9a8 100644
--- a/netrender/master.py
+++ b/netrender/master.py
@@ -434,7 +434,6 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
                     self.send_head(headers={"job-id": job.id})
 
                     message = job.serialize(frames)
-
                     self.wfile.write(bytes(json.dumps(message), encoding='utf8'))
 
                     self.server.stats("", "Sending job to slave")
@@ -512,7 +511,6 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
             length = int(self.headers['content-length'])
 
             job_info = netrender.model.RenderJob.materialize(json.loads(str(self.rfile.read(length), encoding='utf8')))
-
             job_id = self.server.nextJobID()
 
             job = MRenderJob(job_id, job_info)
diff --git a/netrender/model.py b/netrender/model.py
index cab619f271217711d33a7ac5dd730164dd729184..5fbf46ce32294371bc893a760f107633fac09571 100644
--- a/netrender/model.py
+++ b/netrender/model.py
@@ -193,7 +193,7 @@ class RenderJob:
         self.chunks = 0
         self.priority = 0
         self.blacklist = []
-        
+        self.render = "BLENDER_RENDER"
         self.version_info = None
         
         self.resolution = None
@@ -212,6 +212,7 @@ class RenderJob:
             self.priority = job_info.priority
             self.blacklist = job_info.blacklist
             self.version_info = job_info.version_info
+            self.render = job_info.render
 
     def hasRenderResult(self):
         return self.type in (JOB_BLENDER, JOB_VCS)
@@ -292,7 +293,8 @@ class RenderJob:
                             "blacklist": self.blacklist,
                             "last_dispatched": self.last_dispatched,
                             "version_info": self.version_info.serialize() if self.version_info else None,
-                            "resolution": self.resolution
+                            "resolution": self.resolution,
+                            "render": self.render
                         }
 
     @staticmethod
@@ -314,6 +316,7 @@ class RenderJob:
         job.blacklist = data["blacklist"]
         job.last_dispatched = data["last_dispatched"]
         job.resolution = data["resolution"]
+        job.render=data["render"]
         
         version_info = data.get("version_info", None)
         if version_info:
diff --git a/netrender/slave.py b/netrender/slave.py
index f31bddee3e9fd557e9bc5c17ecede518752002ee..c7f3a8cbc3506369efc48c9495be1edd49c4a01b 100644
--- a/netrender/slave.py
+++ b/netrender/slave.py
@@ -238,7 +238,7 @@ def render_slave(engine, netsettings, threads):
                         frame_args += ["-f", str(frame.number)]
 
                     val = SetErrorMode()
-                    process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(JOB_PREFIX, "######"), "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+                    process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(JOB_PREFIX, "######"), "-E", job.render, "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
                     RestoreErrorMode(val)
                 elif job.type == netrender.model.JOB_PROCESS:
                     command = job.frames[0].command
@@ -272,6 +272,7 @@ def render_slave(engine, netsettings, threads):
 
                         run_t = current_t
                         if testCancel(conn, job.id, first_frame):
+                            engine.update_stats("", "Job canceled by Master")
                             cancelled = True
 
                 if job.type == netrender.model.JOB_BLENDER:
diff --git a/netrender/ui.py b/netrender/ui.py
index 068d77b3e12d168424dfb0ca828becf0e1c64a2a..d36e96dcf8ffc0b39c0c401d67ffa029840ce659 100644
--- a/netrender/ui.py
+++ b/netrender/ui.py
@@ -211,17 +211,13 @@ class RENDER_PT_network_job(NetRenderButtonsPanel, bpy.types.Panel):
                 row.operator("render.render", text="Get Image", icon='RENDER_STILL')
                 row.operator("render.render", text="Get Animation", icon='RENDER_ANIMATION').animation = True
 
-        split = layout.split(percentage=0.3)
-
-        col = split.column()
-        col.label(text="Type:")
-        col.label(text="Name:")
-        col.label(text="Category:")
-
-        col = split.column()
-        col.prop(netsettings, "job_type", text="")
-        col.prop(netsettings, "job_name", text="")
-        col.prop(netsettings, "job_category", text="")
+        layout.prop(netsettings, "job_type", text="Type")
+        layout.prop(netsettings, "job_name", text="Name")
+        layout.prop(netsettings, "job_category", text="Category")
+        layout.prop(netsettings, "job_render_engine", text="Engine")
+        
+        if netsettings.job_render_engine == "OTHER":
+            layout.prop(netsettings, "job_render_engine_other", text="Other Engine")
 
         row = layout.row()
         row.prop(netsettings, "priority")
@@ -462,6 +458,22 @@ class NetRenderSettings(bpy.types.PropertyGroup):
                         description="Category of the job",
                         maxlen = 128,
                         default = "")
+
+        NetRenderSettings.job_render_engine = EnumProperty(
+                                items = (
+                                                ("BLENDER_RENDER", "BLENDER", "Standard Blender Render"),
+                                                ("CYCLES", "CYCLES", "Cycle Render"),
+                                                ("OTHER", "OTHER", "Other non-default Render"),
+                                         ),
+                                name="render",
+                                description="Render engine used to render this job",
+                                default="BLENDER_RENDER")
+
+        NetRenderSettings.job_render_engine_other = StringProperty(
+                        name="Render engine",
+                        description="Render engine other than the builtin defaults (POVRAY_RENDER, ...)",
+                        maxlen = 128,
+                        default = "")
         
         NetRenderSettings.chunks = IntProperty(
                         name="Chunks",