refactoring proton phase1