final part 1 whiteout refactoring