isSuggestingValue is now a map to work as recursion guard
added utility function recursiveGuard