implémentation de before/after take