not that I should be surprised, but recursion works