Revert "Revert "refactor""

This reverts commit 0277e4a691c0a21146e3f37122e431ef89af4ee6.
Revert "Revert "edit""

This reverts commit 581983277546b93031abcffc1f921564eb053262.