                                 break
                             }
                             
-                            // 'data' is a JSON object
+                            // 'data' is a JSON string so use the JSON object
                             if (json["elements"] as? [[String:AnyObject]]) != nil {
                                 // 'data' is a redefinition of the item
                                 itemInfos.append(json)

                            itemInfos.append(eval)
                        }
                    } else {
                        itemInfos.append(eval)                        
                    }
                } else {

            for itemInfo in itemsInfoArray {
                if let _ = itemInfo["data"] as? [String:AnyObject] {
                    var eval = originator.evaluate(itemInfo)
                    // if 'data' is a JSON string, use it, otherwise, use the info as is
                    if let dataStr = eval["data"] as? String, data = dataStr.dataUsingEncoding(NSUTF8StringEncoding) {
                        do {
                            guard let json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? [String:AnyObject] else {
