Refactor Entire