implémentation du reste de la structure, incluant les tests unitaires