The module 'route descriptors' dedicated to the calculation of route descriptors has been implemented as a factory pattern and the functions computing the metrics are methods of subclasses of the abstract class DescriptorCalculator. Thus, to introduce a new metric, the first step is to define a new subclass, for example CustomMetric(DescriptorCalculator), and its method 'compute descriptor'. The latter should contain the code necessary to compute the new metric and return its value. As can be seen in the snippet below, there are no requirements for the type of input of the method and the developer can build it as they prefer. The second step is to add the new metric among the available ones. This can be done by adding a new key in the 'route descriptors' dictionary of the DescriptorCal-culatorFactory class, which maps a string identifying a metric into the relative subclass; the string is then used to access the metrics through the descriptor calculator function, as shown below. Most of the modules in the package have the same factory structure as the 'route descriptors', so that the procedure to add new functionalities also in other parts of the code (format conversion, ged calculation and clustering) is the same as the one shown above.