+ second part refactoring