refactoring: using lambdas, default methods, renaming