implementing functionnalities