Begin Refactor