Big refacto
This MR introduces a lot of changes and refacto, I do not squash the commits in order to let more explanation about how it was done.
This MR introduces a lot of changes and refacto, I do not squash the commits in order to let more explanation about how it was done.