Mega Refactor
Merged