final part of the refactorisation