Creating highly reusable software libraries is one of the primary software engineering goals. The ability of a library to be reused, however, depends crucially on the ease of customizing the reusable components. If customization is hard, the well-known library scalability problem [1] ensues: a domain contains n features, but these can produce an exponential (or super-exponential if order matters or features can be replicated) number of combinations. Hard-coding all combinations results in an unmaintainably large library. Offering features as components that are composed without any customization results in undesirable "bad-fit" solutions, either for reasons of performance or correctness.