Better cast_args solution (TODO: signal groups)