     func performOperation(symbol: String) {
         internalProgram.append(symbol as AnyObject)
         
-        description += symbol
+//        description += symbol
         
+        if symbol == "√" {
+            for (index, element) in descriptionCollection.enumerated() {
+                if element == "=" {
+                    descriptionCollection.insert(")", at: index)
+                    descriptionCollection.insert("(", at: 0)
+                    descriptionCollection.insert("√", at: 0)
+                }
+            }
+        } else {
+            descriptionCollection.append(symbol)
+        }
+    
         if let operation = operations[symbol] {
             switch operation {
             case .Constant(let value):

    private var internalProgram = [AnyObject]()
    var variableValues = [String: Double]()
    
    var result: Double? {
        get {
            return accumulator

    var renderDescription: String {
        get {
            if isPartialResult {
                description = String(descriptionCollection.joined())
                return description + "..."
            }
            else {
                description = String(descriptionCollection.joined())
                return description
            }
        }
