diff --git a/src/toolbox_scs/detectors/dssc.py b/src/toolbox_scs/detectors/dssc.py
index b1eb8835cf2e39980c1575eacfa48464703dc0c2..db5e6992b017787e0641f3386613d6de4b62539c 100644
--- a/src/toolbox_scs/detectors/dssc.py
+++ b/src/toolbox_scs/detectors/dssc.py
@@ -355,11 +355,19 @@ class DSSC_Generator:
         pass
 
     def full_detector(self, dssc_data):
-        print('assemble full detector: ')
+        log.debug('start alignment of module data')
         # assemble full detector
-        q_data = joblib.Parallel(n_jobs=4) \
-            (joblib.delayed(self.quadrant)(i, dssc_data) for i in [1, 2, 3, 4])
+        module_data = joblib.Parallel(n_jobs=16) \
+            (joblib.delayed(self.convert_module)
+                (n, dssc_data[n, :, :]) for n in range(16))
 
+        log.debug('assemble converted module data in quadrants')
+        q_data = []
+        for i in range(4):
+            i0 = i*4
+            q_data.append(self.quadrant(i+1, module_data[i0:i0+4]))
+
+        log.debug('align quadrants')
         # determine dimensions
         [qdimy, qdimx] = q_data[0].shape
         fdimy = np.max(
@@ -425,48 +433,51 @@ class DSSC_Generator:
 
         return full_dssc
 
-    def quadrant(self, q, dssc_data):
+    def quadrant(self, q, module_data):
         """
         q: quadrant index 0-3
         dssc_data: (15, 128, 512)
         """
-        print("collecting quadrant: Q" + str(q))
+        log.debug("assembling quadrant: Q" + str(q))
         if q == 1:
-            module0 = self.convert_module(0, dssc_data[0, :, :])
+            module0 = module_data[0]
             mdimx = module0.shape[1]
             qu = [module0]
-            for n in range(1, 4):
+            for n, m in zip(range(1, 4), range(1, 4)):
                 qu.append(np.zeros(
                             (self.module_geodat[n, 0], mdimx),
                             dtype='float32'))
-                qu.append(self.convert_module(n, dssc_data[n, :, :]))
+                qu.append(module_data[m])
+
         elif q == 2:
-            module0 = self.convert_module(4, dssc_data[4, :, :])
+            module0 = module_data[0]
             mdimx = module0.shape[1]
             qu = [module0]
-            for n in range(5, 8):
+            for n, m in zip(range(5, 8), range(1, 4)):
                 qu.append(np.zeros(
                             (self.module_geodat[n, 0], mdimx),
                             dtype='float32'))
-                qu.append(self.convert_module(n, dssc_data[n, :, :]))
+                qu.append(module_data[m])
+
         elif q == 3:
-            module0 = self.convert_module(11, dssc_data[11, :, :])
+            module0 = module_data[3]
             mdimx = module0.shape[1]
             qu = [module0]
-            for n in range(10, 7, -1):
+            for n, m in zip(range(10, 7, -1), range(2, -1, -1)):
                 qu.append(np.zeros(
                             (self.module_geodat[n, 0], mdimx),
                             dtype='float32'))
-                qu.append(self.convert_module(n, dssc_data[n, :, :]))
+                qu.append(module_data[m])
+
         elif q == 4:
-            module0 = self.convert_module(15, dssc_data[15, :, :])
+            module0 = module_data[3]
             mdimx = module0.shape[1]
             qu = [module0]
-            for n in range(14, 11, -1):
+            for n, m in zip(range(14, 11, -1), range(2, -1, -1)):
                 qu.append(np.zeros(
                             (self.module_geodat[n, 0], mdimx),
                             dtype='float32'))
-                qu.append(self.convert_module(n, dssc_data[n, :, :]))
+                qu.append(module_data[m])
 
         return np.vstack(qu)
 
@@ -478,7 +489,7 @@ class DSSC_Generator:
         returns the module in cartesian coordinates with the correct gap
         between tiles
         """
-        print("processing module: " + str(m))
+        log.debug("processing module: " + str(m))
         tile_hex = self.split_module(module_hex)
         offset, flip_module = self._get_tile_geodat(m)
 
@@ -491,7 +502,6 @@ class DSSC_Generator:
 
         if flip_module[0]:
             module_cart = np.flip(module_cart, axis=flip_module[1])
-            # print('flipped module: ' + str(flip_module[1]))
 
         return module_cart