refactoring vues composites