 //        description += symbol
         
         if symbol == "√" {
-            for (index, element) in descriptionCollection.enumerated() {
-                if element == "=" {
-                    descriptionCollection.insert(")", at: index)
-                    descriptionCollection.insert("(", at: 0)
-                    descriptionCollection.insert("√", at: 0)
-                }
-            }
+            if descriptionCollection.contains("=") {
+                descriptionCollection.insert(")", at: descriptionCollection.index(of: "=")!)
+                descriptionCollection.insert("√(", at: 0)
+            } else if !descriptionCollection.contains("=") {
+                descriptionCollection.insert("√(", at: descriptionCollection.count - 1)
+                descriptionCollection.append(")")
+            }
+        } else if symbol == "=" && (descriptionCollection.filter{$0 == "="}).count >= 1 {
+            descriptionCollection = descriptionCollection.filter{$0 != "="}
+            descriptionCollection.append(symbol)
         } else {
             descriptionCollection.append(symbol)
         }

            resetPending()
            resetAccumulator()
            resetDescription()
            internalProgram.removeAll()
            
            if let arrayOfOps = newValue as? [AnyObject] {
                for op in arrayOfOps {

        resetPending()
        resetAccumulator()
        resetDescription()
        resetIsPartialResult()
        internalProgram.removeAll()
        variableValues.removeAll()
        descriptionCollection.removeAll()
    }
    
    typealias PropertyList = AnyObject
