limiting example recursion by depth instead of seen types