no need to calloc the component data, since it will be over-written with actual data