diff --git a/eval/epoch_configs/config_celeba.ini b/eval/epoch_configs/config_celeba.ini
index 782de8ac9d7c9dae2821169125df8aea633eaa05..0a6e7159e0feace34be8cbb9fbdde8ea05c940fe 100644
--- a/eval/epoch_configs/config_celeba.ini
+++ b/eval/epoch_configs/config_celeba.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/epoch_configs/config_celeba_100.ini b/eval/epoch_configs/config_celeba_100.ini
index 3a8ea4727e906521cf4dd833ad971ff7396d727b..8fed4d6c9d6bd598fb356a7b2016d2e8b302d0d0 100644
--- a/eval/epoch_configs/config_celeba_100.ini
+++ b/eval/epoch_configs/config_celeba_100.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/epoch_configs/config_celeba_grow.ini b/eval/epoch_configs/config_celeba_grow.ini
index 8f0b7180a02deb8bd3c17176915ee03eedcf8dae..9c2dfef3972a64fb29f26c5d25ae2bfcde71015e 100644
--- a/eval/epoch_configs/config_celeba_grow.ini
+++ b/eval/epoch_configs/config_celeba_grow.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/epoch_configs/config_femnist.ini b/eval/epoch_configs/config_femnist.ini
index b16bd9aa25f9302fd16e0f9e7117d1b5ba273390..13569c1106073e419e4686c635d613407671db44 100644
--- a/eval/epoch_configs/config_femnist.ini
+++ b/eval/epoch_configs/config_femnist.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/eval/epoch_configs/config_femnist_100.ini b/eval/epoch_configs/config_femnist_100.ini
index 0f7dd023b31b6556818962fb9c57fec6fa37ad56..4e05952966d60bc4e60793e01964b575d75765fb 100644
--- a/eval/epoch_configs/config_femnist_100.ini
+++ b/eval/epoch_configs/config_femnist_100.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/eval/epoch_configs/config_femnist_grow.ini b/eval/epoch_configs/config_femnist_grow.ini
index b240c8410c86266f3f8388cdcaea805ad5535891..75fb9d1efd9c28288a68cb53a743bbc7985723f7 100644
--- a/eval/epoch_configs/config_femnist_grow.ini
+++ b/eval/epoch_configs/config_femnist_grow.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/eval/step_configs/config_celeba.ini b/eval/step_configs/config_celeba.ini
index d58052e5cc37725c68cd04fb8b8723f1859b8917..5cadf017749dbb602188323cbca82a1dfd40dcac 100644
--- a/eval/step_configs/config_celeba.ini
+++ b/eval/step_configs/config_celeba.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/step_configs/config_celeba_100.ini b/eval/step_configs/config_celeba_100.ini
index 2e351a47bcb148001c3895049b7f2d14458a43f0..70e14bbaf2fe87717351567aa4420ce439e3fa98 100644
--- a/eval/step_configs/config_celeba_100.ini
+++ b/eval/step_configs/config_celeba_100.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/step_configs/config_celeba_grow.ini b/eval/step_configs/config_celeba_grow.ini
index a9cd92c46417dce619eb2fab64f3552722e5d8d4..be0812e8c3bc1b91d14d803c3efe89e6d8e9b3e8 100644
--- a/eval/step_configs/config_celeba_grow.ini
+++ b/eval/step_configs/config_celeba_grow.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Celeba
 dataset_class = Celeba
 model_class = CNN
-n_procs = 96
 images_dir = /home/risharma/leaf/data/celeba/data/raw/img_align_celeba
 train_dir = /home/risharma/leaf/data/celeba/per_user_data/train
 test_dir = /home/risharma/leaf/data/celeba/data/test
diff --git a/eval/step_configs/config_femnist.ini b/eval/step_configs/config_femnist.ini
index 0bd4a55dbfd136bf70d5a1fe5ba23f3ca3d3d260..43bb07dc32e862ed73155ba8a879df569d8266c3 100644
--- a/eval/step_configs/config_femnist.ini
+++ b/eval/step_configs/config_femnist.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/eval/step_configs/config_femnist_100.ini b/eval/step_configs/config_femnist_100.ini
index becf623fe8e80f9ce8eeb267b9bb79685a76684e..4e3e9ba57519f265240130dc8c054355e3bd4d18 100644
--- a/eval/step_configs/config_femnist_100.ini
+++ b/eval/step_configs/config_femnist_100.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/eval/step_configs/config_femnist_grow.ini b/eval/step_configs/config_femnist_grow.ini
index 018cdc76da7417340637703348d08dc2d3c9c3d8..9f18ad972e2c5b27e4ffca2242e08488290c083e 100644
--- a/eval/step_configs/config_femnist_grow.ini
+++ b/eval/step_configs/config_femnist_grow.ini
@@ -2,7 +2,6 @@
 dataset_package = decentralizepy.datasets.Femnist
 dataset_class = Femnist
 model_class = CNN
-n_procs = 16
 train_dir = /home/risharma/leaf/data/femnist/per_user_data/train
 test_dir = /home/risharma/leaf/data/femnist/data/test
 ; python list of fractions below
diff --git a/src/decentralizepy/datasets/Celeba.py b/src/decentralizepy/datasets/Celeba.py
index 10b99cbbd2726fe488168aa1524964f307c5817c..61a77c61c3257c062398de10b73ce314300d0064 100644
--- a/src/decentralizepy/datasets/Celeba.py
+++ b/src/decentralizepy/datasets/Celeba.py
@@ -15,6 +15,7 @@ import decentralizepy.utils as utils
 from decentralizepy.datasets.Data import Data
 from decentralizepy.datasets.Dataset import Dataset
 from decentralizepy.datasets.Partitioner import DataPartitioner
+from decentralizepy.mappings.Mapping import Mapping
 from decentralizepy.models.Model import Model
 
 IMAGE_DIM = 84
@@ -185,10 +186,9 @@ class Celeba(Dataset):
 
     def __init__(
         self,
-        rank,
-        machine_id,
-        mapping,
-        n_procs="",
+        rank: int,
+        machine_id: int,
+        mapping: Mapping,
         train_dir="",
         test_dir="",
         images_dir="",
@@ -205,12 +205,11 @@ class Celeba(Dataset):
         machine_id : int
             Machine ID
         mapping : decentralizepy.mappings.Mapping
-            Mapping to conver rank, machine_id -> uid for data partitioning
-        n_procs : int, optional
-            The number of processes among which to divide the data. Default value is assigned 1
+            Mapping to convert rank, machine_id -> uid for data partitioning
+            It also provides the total number of global processes
         train_dir : str, optional
             Path to the training data files. Required to instantiate the training set
-            The training set is partitioned according to n_procs and sizes
+            The training set is partitioned according to the number of global processes and sizes
         test_dir : str. optional
             Path to the testing data files Required to instantiate the testing set
         sizes : list(int), optional
@@ -224,7 +223,6 @@ class Celeba(Dataset):
             rank,
             machine_id,
             mapping,
-            n_procs,
             train_dir,
             test_dir,
             sizes,
diff --git a/src/decentralizepy/datasets/Dataset.py b/src/decentralizepy/datasets/Dataset.py
index 28c36e5af3f87ee9ebc89bdffabf5f0ddf819d1f..5d91f52e73da74183e5d6ed086f0ce33e8c6512f 100644
--- a/src/decentralizepy/datasets/Dataset.py
+++ b/src/decentralizepy/datasets/Dataset.py
@@ -1,5 +1,5 @@
 from decentralizepy import utils
-
+from decentralizepy.mappings.Mapping import Mapping
 
 class Dataset:
     """
@@ -10,10 +10,9 @@ class Dataset:
 
     def __init__(
         self,
-        rank,
-        machine_id,
-        mapping,
-        n_procs="",
+        rank: int,
+        machine_id: int,
+        mapping: Mapping,
         train_dir="",
         test_dir="",
         sizes="",
@@ -29,12 +28,11 @@ class Dataset:
         machine_id : int
             Machine ID
         mapping : decentralizepy.mappings.Mapping
-            Mapping to conver rank, machine_id -> uid for data partitioning
-        n_procs : int, optional
-            The number of processes among which to divide the data. Default value is assigned 1
+            Mapping to convert rank, machine_id -> uid for data partitioning
+            It also provides the total number of global processes
         train_dir : str, optional
             Path to the training data files. Required to instantiate the training set
-            The training set is partitioned according to n_procs and sizes
+            The training set is partitioned according to the number of global processes and sizes
         test_dir : str. optional
             Path to the testing data files Required to instantiate the testing set
         sizes : list(int), optional
@@ -47,7 +45,8 @@ class Dataset:
         self.rank = rank
         self.machine_id = machine_id
         self.mapping = mapping
-        self.n_procs = utils.conditional_value(n_procs, "", 1)
+        # the number of global processes, needed to split-up the dataset
+        self.n_procs = mapping.get_n_procs()
         self.train_dir = utils.conditional_value(train_dir, "", None)
         self.test_dir = utils.conditional_value(test_dir, "", None)
         self.sizes = utils.conditional_value(sizes, "", None)
diff --git a/src/decentralizepy/datasets/Femnist.py b/src/decentralizepy/datasets/Femnist.py
index 2e80096dec27833d1909b85e80840d84b35b53fb..23e9704f6d91b35e7f8ca2150b6d57b209d76ff7 100644
--- a/src/decentralizepy/datasets/Femnist.py
+++ b/src/decentralizepy/datasets/Femnist.py
@@ -13,6 +13,7 @@ from torch.utils.data import DataLoader
 from decentralizepy.datasets.Data import Data
 from decentralizepy.datasets.Dataset import Dataset
 from decentralizepy.datasets.Partitioner import DataPartitioner
+from decentralizepy.mappings.Mapping import Mapping
 from decentralizepy.models.Model import Model
 
 NUM_CLASSES = 62
@@ -179,9 +180,9 @@ class Femnist(Dataset):
 
     def __init__(
         self,
-        rank,
-        machine_id,
-        mapping,
+        rank: int,
+        machine_id: int,
+        mapping: Mapping,
         n_procs="",
         train_dir="",
         test_dir="",
@@ -198,12 +199,11 @@ class Femnist(Dataset):
         machine_id : int
             Machine ID
         mapping : decentralizepy.mappings.Mapping
-            Mapping to conver rank, machine_id -> uid for data partitioning
-        n_procs : int, optional
-            The number of processes among which to divide the data. Default value is assigned 1
+            Mapping to convert rank, machine_id -> uid for data partitioning
+            It also provides the total number of global processes
         train_dir : str, optional
             Path to the training data files. Required to instantiate the training set
-            The training set is partitioned according to n_procs and sizes
+            The training set is partitioned according to the number of global processes and sizes
         test_dir : str. optional
             Path to the testing data files Required to instantiate the testing set
         sizes : list(int), optional
@@ -217,7 +217,6 @@ class Femnist(Dataset):
             rank,
             machine_id,
             mapping,
-            n_procs,
             train_dir,
             test_dir,
             sizes,
diff --git a/src/decentralizepy/mappings/Mapping.py b/src/decentralizepy/mappings/Mapping.py
index b979eb96a753b18abf4b3ecfe9ee62561ad08b2d..9f764ed2875abd2dbaaf01e769c1c4d88d7d858b 100644
--- a/src/decentralizepy/mappings/Mapping.py
+++ b/src/decentralizepy/mappings/Mapping.py
@@ -18,6 +18,18 @@ class Mapping:
         """
         self.n_procs = n_procs
 
+    def get_n_procs(self):
+        """
+        Gives the global sum of all processes that are spawned on the machines
+
+        Returns
+        -------
+        int
+            the number of global processes
+        """
+
+        return self.n_procs
+
     def get_uid(self, rank: int, machine_id: int):
         """
         Gives the global unique identifier of the node
diff --git a/src/decentralizepy/node/Node.py b/src/decentralizepy/node/Node.py
index e7aa9163818947d3fe523a3cf1f630aaa0f0ef41..0ef54cdee09002171d062f3b3f8ea2cf91e537f0 100644
--- a/src/decentralizepy/node/Node.py
+++ b/src/decentralizepy/node/Node.py
@@ -394,8 +394,6 @@ class Node:
             Rank of process local to the machine
         machine_id : int
             Machine ID on which the process in running
-        n_procs_local : int
-            Number of processes on current machine
         mapping : decentralizepy.mappings
             The object containing the mapping rank <--> uid
         graph : decentralizepy.graphs