making component metadata into a concrete class, moving away from the root module in favor of the fluent api (i.e. passing in to the modules)