TP5: Optionnal part completed and tested.