support arbitrary component constructor, apply props, support vertical/horizontal orientations.