Refactor #1
Refactor #2
Refactor #3
Refactor #4