refractored acomponent