redefined components as type