Trying refactor to right way...
WIP
WIP
WIP