Final commit for this branch, I am going to rework everything into something much more simple