Index: framspy/FramsticksEvolution.py
===================================================================
--- framspy/FramsticksEvolution.py	(revision 1325)
+++ framspy/FramsticksEvolution.py	(revision 1329)
@@ -67,5 +67,5 @@
 
 def is_feasible_fitness_value(fitness_value: float) -> bool:
-	assert isinstance(fitness_value, float), f"feasible_fitness({fitness_value}): argument is not of type float, it is of type {type(fitness_value)}"  # since we are using DEAP, we unfortunately must represent the fitness of an "infeasible solution" as a float...
+	assert isinstance(fitness_value, float), f"feasible_fitness({fitness_value}): argument is not of type 'float', it is of type '{type(fitness_value)}'"  # since we are using DEAP, we unfortunately must represent the fitness of an "infeasible solution" as a float...
 	return fitness_value != FITNESS_VALUE_INFEASIBLE_SOLUTION  # ...so if a valid solution happens to have fitness equal to this special value, such a solution will be considered infeasible :/
 
Index: framspy/README.txt
===================================================================
--- framspy/README.txt	(revision 1325)
+++ framspy/README.txt	(revision 1329)
@@ -27,6 +27,5 @@
 framework ( https://deap.readthedocs.io/en/master/ ) to perform the optimization.
 Supports multiple criteria, the generational architecture, and numerous parameters
-to customize the evolutionary search. Invalid genotypes are assigned the fitness of "-1"
-and the selection process is responsible for their extinction.
+to customize the evolutionary search.
 See "run-deap-examples.cmd".
 
Index: framspy/dissimilarity/density_distribution.py
===================================================================
--- framspy/dissimilarity/density_distribution.py	(revision 1325)
+++ framspy/dissimilarity/density_distribution.py	(revision 1329)
@@ -6,5 +6,5 @@
 
 class DensityDistribution:
-    """Two dissimilarity measures based on the spatial distribution of two Models. The Model bounding box is divided into a grid of equally-sized cuboids, the number of which is the 'resolution' parameter cubed. Then the Model surface is covered with points; the density of the surface sampling is determined by the 'density' parameter. There are two versions of the measure. In the default version ('frequency'=False), a signature of each cuboid is the centroid and the number of samples. In the 'frequency'=True version, FFT is computed from the vector containing the number of samples in each cuboid. The final result of the dissimilarity measure is the distance between the signatures and it can be computed using EMD, L1, or L2 norms (the 'metric' parameter).
+    """Two dissimilarity measures based on the spatial distribution of two Models. The Model bounding box is divided into a grid of equally-sized cuboids, the number of which is the 'resolution' parameter cubed. Then the Model surface is covered with points; the density of the surface sampling is determined by the 'density' parameter. There are two versions of the measure. In the default version ('frequency'=False), the signature of each cuboid is the centroid and the number of samples. In the 'frequency'=True version, FFT is computed from the vector containing the number of samples in each cuboid. The final result of the dissimilarity measure is the distance between the signatures and it can be computed using EMD, L1, or L2 norms (the 'metric' parameter).
     """
 
@@ -43,5 +43,5 @@
     def calculateNeighborhood(self,array,mean_coords):
         """ Calculates number of elements for given sample and set ups the center of this sample
-        to the center of mass (calculated by mean of every coordinate)
+        to the center of mass (calculated by mean of every coordinate).
         Args:
             array ([[float,float,float],...,[float,float,float]]): array of voxels that belong to given sample.
@@ -61,12 +61,12 @@
 
 
-    def calculateDistPoints(self,point1, point2):
-        """ Returns Euclidean distance between two points
-        Args (distribution):
-            point1 ([float,float,float]) - coordinates of first point
-            point2 ([float,float,float]) - coordinates of second point
+    def calculateDistPoints(self, point1, point2):
+        """ Returns Euclidean distance between two samples (1D for frequency) or points (3D for distribution).
         Args (frequency):
             point1 (float) - value of the first sample
             point2 (float) - value of the second sample
+        Args (distribution):
+            point1 ([float,float,float]) - coordinates of the first point
+            point2 ([float,float,float]) - coordinates of the second point
 
         Returns:
@@ -74,10 +74,10 @@
         """
         if self.frequency:
-            return abs(point1-point2) # TODO vector instead of scalar returned?
+            return abs(point1-point2)
         else:
             return np.linalg.norm(point1-point2, ord=2)
 
 
-    def calculateDistanceMatrix(self,array1, array2):
+    def calculateDistanceMatrix(self, array1, array2):
         """
         Args:
@@ -138,8 +138,8 @@
             steps3 ([float,float,float]): [size of interval for x axis, size of interval for y axis, size of interval for y axis] 
 
+        Returns (frequency):
+           signature np.array(,dtype=np.float64): returns signatuere np.array of coefficients
         Returns (distribution):
            signature [np.array(,dtype=np.float64),np.array(,dtype=np.float64)]: returns signatuere [np.array of points, np.array of weights]
-        Returns (frequency):
-           signature np.array(,dtype=np.float64): returns signatuere np.array of coefficients
         """
         edges_x,edges_y,edges_z = edges3
@@ -212,5 +212,5 @@
 
     def getVoxels(self,geno):
-        """Generates voxels for genotype using frams.ModelGeometry
+        """Generates voxels for genotype using frams.ModelGeometry.
 
         Args:
