add mixed type and valid_callback