I think this is final refactoring