Add engage gestion + tests + some refactoring