Suppose that you want to develop a product that can easily be configured in a wide variety of ways. What design approach would be best?