diff --git a/d2o/distributor_factory.py b/d2o/distributor_factory.py
index 12a6f8396d68d083e3dee77a2f3044efd7755685..a1ab4648cc23e5cd6c8038df78d76bc9df60fe92 100644
--- a/d2o/distributor_factory.py
+++ b/d2o/distributor_factory.py
@@ -602,11 +602,10 @@ class _slicing_distributor(distributor):
             contracted_global_data = contracted_local_data
             new_dist_strategy = parent.distribution_strategy
 
-        new_dtype = contracted_global_data.dtype
-
         if new_shape == ():
             result = contracted_global_data
         else:
+            new_dtype = contracted_global_data.dtype
             # try to store the result in a distributed_data_object with the
             # distribution_strategy as parent
             result = parent.copy_empty(global_shape=new_shape,
diff --git a/d2o/translate_to_mpi_operator.py b/d2o/translate_to_mpi_operator.py
index 175f7964c862f7840c579529986593d041221722..ee38aaa919f546f10e368c5da2c8a0bcf3944159 100644
--- a/d2o/translate_to_mpi_operator.py
+++ b/d2o/translate_to_mpi_operator.py
@@ -10,12 +10,12 @@ MPI = gdi[gc['mpi_module']]
 custom_MIN = MPI.Op.Create(lambda x, y, datatype:
                            np.amin(np.vstack((x, y)), axis=0)
                            if isinstance(x, np.ndarray) else
-                           lambda x, y, d: MPI.MIN(x, y))
+                           min(x, y))
 
 custom_MAX = MPI.Op.Create(lambda x, y, datatype:
                            np.amax(np.vstack((x, y)), axis=0)
                            if isinstance(x, np.ndarray) else
-                           lambda x, y, d: MPI.MAX(x, y))
+                           max(x, y))
 
 custom_NANMIN = MPI.Op.Create(lambda x, y, datatype:
                               np.nanmin(np.vstack((x, y)), axis=0))