A lot of code refactoring.
Adding profiles for default implementations