it's a classical recursion problem