general refactoring and addition of the class ImplementationMap