avoid recursive hell