change component type implementation