Refactoring to generic abstract base registry implementation