refactor define component options
add component generator
Merge pull request #1400 from tyabe/add_component_generator

Add component generator