use component/type more wisely