Noticed you have the return type here as arrfunc_type_data instead of nd::arrfunc (like below). I guess this is for efficiency but seems a bit confusing to have two different options for the same thing.