Big refactoring + New fonctionality