it works ! TODO simplified and take into account the way of the caller