refactoring cas par cas