Added type_check and exhaustiveness_check