Slightly clearer recursion