add component support
merge master with 0.1.x