diff --git a/model_server/base/session.py b/model_server/base/session.py
index 4aa88a1e212fc5e7b759fd82c3ef69f2e45d1ff3..be4911f09d3e20982328cbe465815225050b56f2 100644
--- a/model_server/base/session.py
+++ b/model_server/base/session.py
@@ -251,7 +251,7 @@ class _Session(object):
         :param params: optional parameters that are passed to the model's construct
         :return: model_id of loaded model
         """
-        mi = ModelClass(params=params.dict())
+        mi = ModelClass(params=params.dict() if params else None)
         assert mi.loaded, f'Error loading instance of {ModelClass.__name__}'
         ii = 0
 
diff --git a/model_server/extensions/ilastik/models.py b/model_server/extensions/ilastik/models.py
index dccb269ade99d677fc22336979ccd98c61a1076e..5e45bab4d6e9077c1799a957f041edcf60f1baed 100644
--- a/model_server/extensions/ilastik/models.py
+++ b/model_server/extensions/ilastik/models.py
@@ -137,7 +137,7 @@ class IlastikPixelClassifierModel(IlastikModel, SemanticSegmentationModel):
             [1, 2, 3, 0],
             [0, 1, 2, 3]
         )
-        return InMemoryDataAccessor(data=yxcz), {'success': True}
+        return InMemoryDataAccessor(data=yxcz)
 
     def infer_patch_stack(self, img: PatchStack, **kwargs) -> (np.ndarray, dict):
         """
@@ -150,13 +150,13 @@ class IlastikPixelClassifierModel(IlastikModel, SemanticSegmentationModel):
         for i in range(0, img.count):
             sl = img.get_slice_at(i)
             try:
-                data[i][sl[0], sl[1], :, sl[3]] = self.infer(img.iat(i, crop=True))[0].data
+                data[i][sl[0], sl[1], :, sl[3]] = self.infer(img.iat(i, crop=True)).data
             except FeatureSelectionConstraintError: # occurs occasionally on small patches
                 continue
-        return PatchStack(data), {'success': True}
+        return PatchStack(data)
 
     def label_pixel_class(self, img: GenericImageDataAccessor, **kwargs):
-        pxmap, _ = self.infer(img)
+        pxmap = self.infer(img)
         mask = pxmap.get_mono(self.params['px_class']).apply(lambda x: x > self.params['px_prob_threshold'])
         return mask
 
@@ -219,19 +219,18 @@ class IlastikObjectClassifierFromSegmentationModel(IlastikModel, InstanceSegment
                 [0, 1, 2, 3, 4],
                 [0, 4, 1, 2, 3]
             )
-            return PatchStack(data=pyxcz), {'success': True}
+            return PatchStack(data=pyxcz)
         else:
             yxcz = np.moveaxis(
                 obmaps[0],
                 [1, 2, 3, 0],
                 [0, 1, 2, 3]
             )
-            return InMemoryDataAccessor(data=yxcz), {'success': True}
+            return InMemoryDataAccessor(data=yxcz)
 
     def label_instance_class(self, img: GenericImageDataAccessor, mask: GenericImageDataAccessor, **kwargs):
         super(IlastikObjectClassifierFromSegmentationModel, self).label_instance_class(img, mask, **kwargs)
-        obmap, _ = self.infer(img, mask)
-        return obmap
+        return self.infer(img, mask)
 
 
 class IlastikObjectClassifierFromPixelPredictionsModel(IlastikModel, ImageToImageModel):
@@ -277,14 +276,14 @@ class IlastikObjectClassifierFromPixelPredictionsModel(IlastikModel, ImageToImag
                 [0, 1, 2, 3, 4],
                 [0, 4, 1, 2, 3]
             )
-            return PatchStack(data=pyxcz), {'success': True}
+            return PatchStack(data=pyxcz)
         else:
             yxcz = np.moveaxis(
                 obmaps[0],
                 [1, 2, 3, 0],
                 [0, 1, 2, 3]
             )
-            return InMemoryDataAccessor(data=yxcz), {'success': True}
+            return InMemoryDataAccessor(data=yxcz)
 
 
     def label_instance_class(self, img: GenericImageDataAccessor, pxmap: GenericImageDataAccessor, **kwargs):
@@ -305,8 +304,7 @@ class IlastikObjectClassifierFromPixelPredictionsModel(IlastikModel, ImageToImag
         pxch = kwargs.get('pixel_classification_channel', 0)
         pxtr = kwargs.get('pixel_classification_threshold', 0.5)
         mask = InMemoryDataAccessor(pxmap.get_one_channel_data(pxch).data > pxtr)
-        obmap, _ = self.infer(img, mask)
-        return obmap
+        return self.infer(img, mask)
 
 
 class Error(Exception):
diff --git a/model_server/extensions/ilastik/pipelines/px_then_ob.py b/model_server/extensions/ilastik/pipelines/px_then_ob.py
index 1aa64615479cad29f01b7d7e416d1fec2f3c9568..2e9fd6e46d6be10e9b0cdfbdac6bebe506019c68 100644
--- a/model_server/extensions/ilastik/pipelines/px_then_ob.py
+++ b/model_server/extensions/ilastik/pipelines/px_then_ob.py
@@ -57,8 +57,8 @@ def pixel_then_object_classification_pipeline(
     else:
         channels = range(0, d['input'].chroma)
     d['select_channels'] = d.last.get_channels(channels, mip=k.get('mip', False))
-    d['pxmap'], _ = models['px_model'].infer(d.last)
-    d['ob_map'], _ = models['ob_model'].infer(d['select_channels'], d['pxmap'])
+    d['pxmap'] = models['px_model'].infer(d.last)
+    d['ob_map'] = models['ob_model'].infer(d['select_channels'], d['pxmap'])
 
     return d
 
diff --git a/tests/test_ilastik/test_ilastik.py b/tests/test_ilastik/test_ilastik.py
index a6f467f9b7da2c30f14f07c09fc1a5f32db40f4a..4eedf981452b7771d9e1b6aa5c61f0fa72368633 100644
--- a/tests/test_ilastik/test_ilastik.py
+++ b/tests/test_ilastik/test_ilastik.py
@@ -148,7 +148,7 @@ class TestIlastikPixelClassification(unittest.TestCase):
         self.assertEqual(mask.nz, acc.nz)
         self.assertEqual(mask.count, acc.count)
 
-        pxmap, _ = self.model.infer_patch_stack(acc)
+        pxmap = self.model.infer_patch_stack(acc)
         self.assertEqual(pxmap.dtype, float)
         self.assertEqual(pxmap.chroma, len(self.model.labels))
         self.assertEqual(pxmap.hw, acc.hw)
@@ -162,7 +162,7 @@ class TestIlastikPixelClassification(unittest.TestCase):
             params={'project_file': ilastik_classifiers['pxmap_to_obj']['path'].__str__()}
         )
         mask = self.model.label_pixel_class(self.mono_image)
-        objmap, _ = model.infer(self.mono_image, mask)
+        objmap = model.infer(self.mono_image, mask)
 
         self.assertTrue(
             write_accessor_data_to_file(
@@ -333,7 +333,7 @@ class TestIlastikOnMultichannelInputs(TestServerTestCase):
         img = generate_file_accessor(self.pa_input_image)
         self.assertGreater(img.chroma, 1)
         mod = ilm.IlastikPixelClassifierModel({'project_file': self.pa_px_classifier.__str__()})
-        pxmap = mod.infer(img)[0]
+        pxmap = mod.infer(img)
         self.assertEqual(pxmap.hw, img.hw)
         self.assertEqual(pxmap.nz, img.nz)
         return pxmap
diff --git a/tests/test_ilastik/test_roiset_workflow.py b/tests/test_ilastik/test_roiset_workflow.py
index 5f799089a54306fe3f2b5a03d4a1fa030e81a3fe..4adf24bb25a13e9a72bbad1bd0fbf9f0983b88ca 100644
--- a/tests/test_ilastik/test_roiset_workflow.py
+++ b/tests/test_ilastik/test_roiset_workflow.py
@@ -72,18 +72,14 @@ class BaseTestRoiSetMonoProducts(object):
                 'name': 'ilastik_px_mod',
                 'project_file': fp_px,
                 'model': ilm.IlastikPixelClassifierModel(
-                    ilm.IlastikPixelClassifierParams(
-                        project_file=fp_px,
-                    )
+                    {'project_file': fp_px},
                 )
             },
             'object_classifier': {
                 'name': 'ilastik_ob_mod',
                 'project_file': fp_ob,
                 'model': ilm.IlastikObjectClassifierFromSegmentationModel(
-                    ilm.IlastikParams(
-                        project_file=fp_ob
-                    )
+                    {'project_file': fp_ob},
                 )
             },
         }