flattened recursion with func pointer & tuple returns