use type_index instead of type_info*