add recursion and tests (that show that it is overly permissive)