how to create extensible software - providers and modules are the answer
extensible software - creating providers and modules