First step
First step
Second step
third step
step 4
Refactorization
Step 5
step 6
Refactorization
Step 7