reorganized and made sure to use c_type_sig