component: make dynamic changes easier