diff --git a/lbmpy/sparse/mapping.py b/lbmpy/sparse/mapping.py
index a43aba664a6efddd813577c24664cb7b1c095a45..21e775bb5377ec5cffa0de518004aaf9dbf99753 100644
--- a/lbmpy/sparse/mapping.py
+++ b/lbmpy/sparse/mapping.py
@@ -189,19 +189,22 @@ class SparseLbPeriodicityMapper:
         else:
             return self.mapping._sorter[left]
         
-    def create_index_arr(self):
+    def create_index_arr(self): # erstellt index arrays für ALLE fluid Zellen, die sich am Rand der domain befinden.
+        # ein index array für alle Werte, die innerhalb des Blocks verschickt werden
+        # jeweils ein index array für Werte, die zu jeweils verschiedenen benachbarten Blocks geschickt werden (wenn verschiedene Kerne verschiedene Blöcke innerhalb einer Domain bearbeiten)
         stencil = self.method.stencil
         print("domain_size:", self.domain_size)
         result = []
         inner = []
         for direction_idx, direction in enumerate(stencil):
-            if all(d_i == 0 for d_i in direction):
+            if all(d_i == 0 for d_i in direction): # direction (0,0) irrelevant
                 continue
-            #print("direction:", direction, ", ", direction_idx)
-            for pos in range(0,2):
+            print("\n New direction:", direction, ", ", direction_idx)
+            for pos in range(0,2): # einmal für x, einmal für y Richtung ... 
                 sop = (pos+1)%2
                 if direction[pos] != 0:
-                    # periodic/parallel
+                    # periodic/parallel: wird an anderen Block geschickt/periodisch gewrappt
+                    print("(periodic:)")
                     index_array = []
                     coord = int((self.domain_size[pos]-1)*(1-direction[pos])/2)
                     prev_read = [0,0]
@@ -212,17 +215,21 @@ class SparseLbPeriodicityMapper:
                         write[sop] = i
                         cur_read = [(write_i - dir_i)%ds_i for write_i, dir_i, ds_i in zip(write, direction, self.domain_size)]
                         if cur_read[pos] < prev_read[pos] or cur_read[sop] < prev_read[sop]:
-                            result.append(tuple(index_array))
+                            #index_array wird abgetrennt und neu begonnen, da hier Kommunikation mit einem anderen Block als vorher geschieht
+                            result.append(tuple(index_array)) 
                             index_array = []
-                        #print("write:", write, "read:", cur_read)
+                            print("--cut--")
+                        print("write:", write, "read:", cur_read) # "Die Zelle "write" bekommt ihren neuen Wert der jeweiligen direction von der Zelle "read"
                         write_idx = self.cell_idx(tuple(write))
                         read_idx = self.cell_idx(tuple(cur_read))
                         index_array.append((direction_idx, pdf_index(write_idx, direction_idx, len(self.mapping)), pdf_index(read_idx, direction_idx, len(self.mapping))))
-                        #index_array.append([direction_idx, write, cur_read])
+                        #index_array.append([direction_idx, write, cur_read]) #nur zu debug Zwecken
                         prev_read[pos] = cur_read[pos]
                         prev_read[sop] = cur_read[sop]
                     result.append(tuple(index_array))
-                    # inner
+                    
+                    # inner: wird zwischen benachbarten Zellen *im gleichen Block* geschickt
+                    print("(inner:)")
                     pos_bound = int((self.domain_size[pos]-1)*(1+direction[pos])/2)
                     pos_mid = pos_bound+direction[pos]*(-self.domain_size[pos]+1)
                     sop_position = [int((self.domain_size[sop]-1)*(1+direction[sop])/2)] if direction[sop] != 0 else [0, self.domain_size[sop]-1]
@@ -233,10 +240,11 @@ class SparseLbPeriodicityMapper:
                             write[pos] = i
                             write[sop] = b
                             read = [write_i - dir_i for write_i, dir_i in zip(write, direction)]
-                            #print("write:", write, "read:", read)
+                            print("write:", write, "read:", read)
                             inner.append([direction_idx, write, read])
-                if direction[pos] == 0:
-                    # inner
+                if direction[pos] == 0: #spricht directions 1, 2, 3 und 4 an
+                    # inner: wird zwischen benachbarte Zellen *im gleichen Block* geschickt
+                    print("(inner:)")
                     pos_low = 1
                     pos_high = self.domain_size[pos]-1
                     sop_position = int((self.domain_size[sop]-1)*(1+direction[sop])/2)
@@ -246,18 +254,25 @@ class SparseLbPeriodicityMapper:
                         write[pos] = i
                         write[sop] = sop_position
                         read = [write_i - dir_i for write_i, dir_i in zip(write, direction)]
-                        #print("write:", write, "read:", read)
+                        print("write:", write, "read:", read)
                         inner.append([direction_idx, write, read])
-        result = list(dict.fromkeys(result))
-        list_result = []
+        # result enthält *mehrere* index arrays
+        result = list(dict.fromkeys(result)) # entferne doppelte index_arrays: speziell Ecken der Domain
+        # result ist eine liste von tuples von tuples --> [((...), (...)), ((...), (...), (...))]
+        print(result)
+        # wandel result in list_result (liste von liste von listen) um: -->[[[...], [...]], [[...], [...], [...]]]
+        list_result = [] 
         for index_array in result:
             list_index_array = []
             for write_read_pair in index_array:
                 list_index_array.append(list(write_read_pair))
             list_result.append(list_index_array)
+        
+        # zu den periodischen/parralel-orientierten index_arrays kommt noch der index array für die Werte, die nur innerhalb des Blocks verschickt werden:
         list_result.append(inner)
-        for i_a in list_result:
-            print(i_a)
+        
+        for index_array in list_result:
+            print(index_array)
         return list_result
                         
                 
diff --git a/lbmpy_tests/test_sparse_lbm.ipynb b/lbmpy_tests/test_sparse_lbm.ipynb
index cbbbbda9bb1542917565fd5677d376560f5abeed..d7d903ef853e1cecc40f066994e715ac46d280e0 100644
--- a/lbmpy_tests/test_sparse_lbm.ipynb
+++ b/lbmpy_tests/test_sparse_lbm.ipynb
@@ -216,12 +216,12 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 13,
    "metadata": {},
    "outputs": [],
    "source": [
     "mapping = SparseLbMapper(method.stencil, flag_arr, flags['fluid'], flags[noslip], 0, 0) #Warum müssen (dürfen!) hier Nullen stehen?\n",
-    "#index_arr = mapping.create_index_array(ghost_layers)\n",
+    "#index_arr = mapping.create_index_array(ghost_layers) # funktioniert nicht solange am Rand fluid Zellen sind!\n",
     "#print(index_arr)\n",
     "\n",
     "# Arrays\n",
@@ -274,7 +274,147 @@
      "output_type": "stream",
      "text": [
       "domain_size: (4, 3)\n",
-      "[((1, 12, 14), (1, 15, 17), (1, 18, 20), (1, 21, 23)), ((2, 26, 24), (2, 29, 27), (2, 32, 30), (2, 35, 33)), ((3, 45, 36), (3, 46, 37), (3, 47, 38)), ((4, 48, 57), (4, 49, 58), (4, 50, 59)), ((5, 69, 62),), ((5, 70, 60), (5, 71, 61)), ((5, 60, 65), (5, 63, 68), (5, 66, 71)), ((5, 69, 62),), ((6, 72, 83),), ((6, 73, 81), (6, 74, 82)), ((6, 72, 83),), ((6, 75, 74), (6, 78, 77), (6, 81, 80)), ((7, 93, 85), (7, 94, 86)), ((7, 95, 84),), ((7, 86, 87), (7, 89, 90), (7, 92, 93)), ((7, 95, 84),), ((8, 96, 106), (8, 97, 107)), ((8, 98, 105),), ((8, 98, 105),), ((8, 101, 96), (8, 104, 99), (8, 107, 102))]\n",
+      "\n",
+      " New direction: (0, 1) ,  1\n",
+      "(inner)\n",
+      "write: [1, 2] read: [1, 1]\n",
+      "write: [2, 2] read: [2, 1]\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [0, 2]\n",
+      "write: [1, 0] read: [1, 2]\n",
+      "write: [2, 0] read: [2, 2]\n",
+      "write: [3, 0] read: [3, 2]\n",
+      "(inner)\n",
+      "write: [0, 2] read: [0, 1]\n",
+      "write: [0, 1] read: [0, 0]\n",
+      "write: [3, 2] read: [3, 1]\n",
+      "write: [3, 1] read: [3, 0]\n",
+      "\n",
+      " New direction: (0, -1) ,  2\n",
+      "(inner)\n",
+      "write: [1, 0] read: [1, 1]\n",
+      "write: [2, 0] read: [2, 1]\n",
+      "(periodic)\n",
+      "write: [0, 2] read: [0, 0]\n",
+      "write: [1, 2] read: [1, 0]\n",
+      "write: [2, 2] read: [2, 0]\n",
+      "write: [3, 2] read: [3, 0]\n",
+      "(inner)\n",
+      "write: [0, 0] read: [0, 1]\n",
+      "write: [0, 1] read: [0, 2]\n",
+      "write: [3, 0] read: [3, 1]\n",
+      "write: [3, 1] read: [3, 2]\n",
+      "\n",
+      " New direction: (-1, 0) ,  3\n",
+      "(periodic)\n",
+      "write: [3, 0] read: [0, 0]\n",
+      "write: [3, 1] read: [0, 1]\n",
+      "write: [3, 2] read: [0, 2]\n",
+      "(inner)\n",
+      "write: [0, 0] read: [1, 0]\n",
+      "write: [1, 0] read: [2, 0]\n",
+      "write: [2, 0] read: [3, 0]\n",
+      "write: [0, 2] read: [1, 2]\n",
+      "write: [1, 2] read: [2, 2]\n",
+      "write: [2, 2] read: [3, 2]\n",
+      "(inner)\n",
+      "write: [0, 1] read: [1, 1]\n",
+      "\n",
+      " New direction: (1, 0) ,  4\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [3, 0]\n",
+      "write: [0, 1] read: [3, 1]\n",
+      "write: [0, 2] read: [3, 2]\n",
+      "(inner)\n",
+      "write: [3, 0] read: [2, 0]\n",
+      "write: [2, 0] read: [1, 0]\n",
+      "write: [1, 0] read: [0, 0]\n",
+      "write: [3, 2] read: [2, 2]\n",
+      "write: [2, 2] read: [1, 2]\n",
+      "write: [1, 2] read: [0, 2]\n",
+      "(inner)\n",
+      "write: [3, 1] read: [2, 1]\n",
+      "\n",
+      " New direction: (-1, 1) ,  5\n",
+      "(periodic)\n",
+      "write: [3, 0] read: [0, 2]\n",
+      "--cut--\n",
+      "write: [3, 1] read: [0, 0]\n",
+      "write: [3, 2] read: [0, 1]\n",
+      "(inner)\n",
+      "write: [0, 2] read: [1, 1]\n",
+      "write: [1, 2] read: [2, 1]\n",
+      "write: [2, 2] read: [3, 1]\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [1, 2]\n",
+      "write: [1, 0] read: [2, 2]\n",
+      "write: [2, 0] read: [3, 2]\n",
+      "--cut--\n",
+      "write: [3, 0] read: [0, 2]\n",
+      "(inner)\n",
+      "write: [0, 2] read: [1, 1]\n",
+      "write: [0, 1] read: [1, 0]\n",
+      "\n",
+      " New direction: (1, 1) ,  6\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [3, 2]\n",
+      "--cut--\n",
+      "write: [0, 1] read: [3, 0]\n",
+      "write: [0, 2] read: [3, 1]\n",
+      "(inner)\n",
+      "write: [3, 2] read: [2, 1]\n",
+      "write: [2, 2] read: [1, 1]\n",
+      "write: [1, 2] read: [0, 1]\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [3, 2]\n",
+      "--cut--\n",
+      "write: [1, 0] read: [0, 2]\n",
+      "write: [2, 0] read: [1, 2]\n",
+      "write: [3, 0] read: [2, 2]\n",
+      "(inner)\n",
+      "write: [3, 2] read: [2, 1]\n",
+      "write: [3, 1] read: [2, 0]\n",
+      "\n",
+      " New direction: (-1, -1) ,  7\n",
+      "(periodic)\n",
+      "write: [3, 0] read: [0, 1]\n",
+      "write: [3, 1] read: [0, 2]\n",
+      "--cut--\n",
+      "write: [3, 2] read: [0, 0]\n",
+      "(inner)\n",
+      "write: [0, 0] read: [1, 1]\n",
+      "write: [1, 0] read: [2, 1]\n",
+      "write: [2, 0] read: [3, 1]\n",
+      "(periodic)\n",
+      "write: [0, 2] read: [1, 0]\n",
+      "write: [1, 2] read: [2, 0]\n",
+      "write: [2, 2] read: [3, 0]\n",
+      "--cut--\n",
+      "write: [3, 2] read: [0, 0]\n",
+      "(inner)\n",
+      "write: [0, 0] read: [1, 1]\n",
+      "write: [0, 1] read: [1, 2]\n",
+      "\n",
+      " New direction: (1, -1) ,  8\n",
+      "(periodic)\n",
+      "write: [0, 0] read: [3, 1]\n",
+      "write: [0, 1] read: [3, 2]\n",
+      "--cut--\n",
+      "write: [0, 2] read: [3, 0]\n",
+      "(inner)\n",
+      "write: [3, 0] read: [2, 1]\n",
+      "write: [2, 0] read: [1, 1]\n",
+      "write: [1, 0] read: [0, 1]\n",
+      "(periodic)\n",
+      "write: [0, 2] read: [3, 0]\n",
+      "--cut--\n",
+      "write: [1, 2] read: [0, 0]\n",
+      "write: [2, 2] read: [1, 0]\n",
+      "write: [3, 2] read: [2, 0]\n",
+      "(inner)\n",
+      "write: [3, 0] read: [2, 1]\n",
+      "write: [3, 1] read: [2, 2]\n",
+      "[((1, 12, 14), (1, 15, 17), (1, 18, 20), (1, 21, 23)), ((2, 26, 24), (2, 29, 27), (2, 32, 30), (2, 35, 33)), ((3, 45, 36), (3, 46, 37), (3, 47, 38)), ((4, 48, 57), (4, 49, 58), (4, 50, 59)), ((5, 69, 62),), ((5, 70, 60), (5, 71, 61)), ((5, 60, 65), (5, 63, 68), (5, 66, 71)), ((6, 72, 83),), ((6, 73, 81), (6, 74, 82)), ((6, 75, 74), (6, 78, 77), (6, 81, 80)), ((7, 93, 85), (7, 94, 86)), ((7, 95, 84),), ((7, 86, 87), (7, 89, 90), (7, 92, 93)), ((8, 96, 106), (8, 97, 107)), ((8, 98, 105),), ((8, 101, 96), (8, 104, 99), (8, 107, 102))]\n",
       "[[1, 12, 14], [1, 15, 17], [1, 18, 20], [1, 21, 23]]\n",
       "[[2, 26, 24], [2, 29, 27], [2, 32, 30], [2, 35, 33]]\n",
       "[[3, 45, 36], [3, 46, 37], [3, 47, 38]]\n",
@@ -290,7 +430,8 @@
       "[[7, 86, 87], [7, 89, 90], [7, 92, 93]]\n",
       "[[8, 96, 106], [8, 97, 107]]\n",
       "[[8, 98, 105]]\n",
-      "[[8, 101, 96], [8, 104, 99], [8, 107, 102]]\n"
+      "[[8, 101, 96], [8, 104, 99], [8, 107, 102]]\n",
+      "[[1, [1, 2], [1, 1]], [1, [2, 2], [2, 1]], [1, [0, 2], [0, 1]], [1, [0, 1], [0, 0]], [1, [3, 2], [3, 1]], [1, [3, 1], [3, 0]], [2, [1, 0], [1, 1]], [2, [2, 0], [2, 1]], [2, [0, 0], [0, 1]], [2, [0, 1], [0, 2]], [2, [3, 0], [3, 1]], [2, [3, 1], [3, 2]], [3, [0, 0], [1, 0]], [3, [1, 0], [2, 0]], [3, [2, 0], [3, 0]], [3, [0, 2], [1, 2]], [3, [1, 2], [2, 2]], [3, [2, 2], [3, 2]], [3, [0, 1], [1, 1]], [4, [3, 0], [2, 0]], [4, [2, 0], [1, 0]], [4, [1, 0], [0, 0]], [4, [3, 2], [2, 2]], [4, [2, 2], [1, 2]], [4, [1, 2], [0, 2]], [4, [3, 1], [2, 1]], [5, [0, 2], [1, 1]], [5, [1, 2], [2, 1]], [5, [2, 2], [3, 1]], [5, [0, 2], [1, 1]], [5, [0, 1], [1, 0]], [6, [3, 2], [2, 1]], [6, [2, 2], [1, 1]], [6, [1, 2], [0, 1]], [6, [3, 2], [2, 1]], [6, [3, 1], [2, 0]], [7, [0, 0], [1, 1]], [7, [1, 0], [2, 1]], [7, [2, 0], [3, 1]], [7, [0, 0], [1, 1]], [7, [0, 1], [1, 2]], [8, [3, 0], [2, 1]], [8, [2, 0], [1, 1]], [8, [1, 0], [0, 1]], [8, [3, 0], [2, 1]], [8, [3, 1], [2, 2]]]\n"
      ]
     },
     {
@@ -311,7 +452,53 @@
        " [[7, 86, 87], [7, 89, 90], [7, 92, 93]],\n",
        " [[8, 96, 106], [8, 97, 107]],\n",
        " [[8, 98, 105]],\n",
-       " [[8, 101, 96], [8, 104, 99], [8, 107, 102]]]"
+       " [[8, 101, 96], [8, 104, 99], [8, 107, 102]],\n",
+       " [[1, [1, 2], [1, 1]],\n",
+       "  [1, [2, 2], [2, 1]],\n",
+       "  [1, [0, 2], [0, 1]],\n",
+       "  [1, [0, 1], [0, 0]],\n",
+       "  [1, [3, 2], [3, 1]],\n",
+       "  [1, [3, 1], [3, 0]],\n",
+       "  [2, [1, 0], [1, 1]],\n",
+       "  [2, [2, 0], [2, 1]],\n",
+       "  [2, [0, 0], [0, 1]],\n",
+       "  [2, [0, 1], [0, 2]],\n",
+       "  [2, [3, 0], [3, 1]],\n",
+       "  [2, [3, 1], [3, 2]],\n",
+       "  [3, [0, 0], [1, 0]],\n",
+       "  [3, [1, 0], [2, 0]],\n",
+       "  [3, [2, 0], [3, 0]],\n",
+       "  [3, [0, 2], [1, 2]],\n",
+       "  [3, [1, 2], [2, 2]],\n",
+       "  [3, [2, 2], [3, 2]],\n",
+       "  [3, [0, 1], [1, 1]],\n",
+       "  [4, [3, 0], [2, 0]],\n",
+       "  [4, [2, 0], [1, 0]],\n",
+       "  [4, [1, 0], [0, 0]],\n",
+       "  [4, [3, 2], [2, 2]],\n",
+       "  [4, [2, 2], [1, 2]],\n",
+       "  [4, [1, 2], [0, 2]],\n",
+       "  [4, [3, 1], [2, 1]],\n",
+       "  [5, [0, 2], [1, 1]],\n",
+       "  [5, [1, 2], [2, 1]],\n",
+       "  [5, [2, 2], [3, 1]],\n",
+       "  [5, [0, 2], [1, 1]],\n",
+       "  [5, [0, 1], [1, 0]],\n",
+       "  [6, [3, 2], [2, 1]],\n",
+       "  [6, [2, 2], [1, 1]],\n",
+       "  [6, [1, 2], [0, 1]],\n",
+       "  [6, [3, 2], [2, 1]],\n",
+       "  [6, [3, 1], [2, 0]],\n",
+       "  [7, [0, 0], [1, 1]],\n",
+       "  [7, [1, 0], [2, 1]],\n",
+       "  [7, [2, 0], [3, 1]],\n",
+       "  [7, [0, 0], [1, 1]],\n",
+       "  [7, [0, 1], [1, 2]],\n",
+       "  [8, [3, 0], [2, 1]],\n",
+       "  [8, [2, 0], [1, 1]],\n",
+       "  [8, [1, 0], [0, 1]],\n",
+       "  [8, [3, 0], [2, 1]],\n",
+       "  [8, [3, 1], [2, 2]]]]"
       ]
      },
      "execution_count": 10,