Complete rewrite - Less code, better performance
.
.
moving on
cleaning
Check point
Cleaning