             switch operation {
                 case .constant(let value):
                     accumulator = value
-                case .unaryOperation(let function):
+                case .unaryOperation(let function, let functionDescription):
                     accumulator = function(accumulator)
+                    descriptionAccumulator = functionDescription(descriptionAccumulator)
                 case .binaryOperation(let function):
                     executePendingBinaryOperation()
                     pending = PendingBinaryOperation(binaryFunction: function, firstOperand: accumulator)

    
    fileprivate enum Operation{
        case constant(Double)
        case unaryOperation((Double) -> Double)
        case binaryOperation((Double, Double) -> Double)
        case equals
        case clear

    fileprivate var operations: Dictionary<String,Operation> = [
        "π" : Operation.constant(M_PI),
        "e" : Operation.constant(M_E),
        "±" : Operation.unaryOperation({ -$0 }, {"-(" + $0 + ")"}),
        "√" : Operation.unaryOperation(sqrt, {"√(" + $0 + ")"}),
        "sin" : Operation.unaryOperation(sin, {"sin(" + $0 + ")"}),
        "cos" : Operation.unaryOperation(cos, {"cos(" + $0 + ")"}),
        "tan" : Operation.unaryOperation(tan, {"tan(" + $0 + ")"}),
        "+" : Operation.binaryOperation({ $0 + $1 }),
        "-" : Operation.binaryOperation({ $0 - $1 }),
        "x" : Operation.binaryOperation({ $0 * $1 }),
