Increasing Reuse in Component Models through Genericity