Why is this recursive? A do-while loop would accomplish the same thing, and then you wouldn't need the 'func' argument.