         addBuiltin(name: "cond") { args in
             let condition: LispType = args!.value
             
-            func evaluateOrReturnResult(val: LispType) -> LispType
-            {
-                var rv: LispType
-                
-                switch val {
-                    
-                case .Atom(let a):
-                    if let r = self.env.getVariable(name: a) {
-                        rv = r
-                    } else {
-                        rv = val
-                    }
-                    break
-                    
-                case .LPair(let p):
-                    rv = self.env.evaluate(p: p)
-                    break
-                    
-                default:
-                    rv = val
-                }
-                
-                return rv
-            }
-            
-            let result = evaluateOrReturnResult(val: condition)
+            
+            
+            let result = self.evaluateOrReturnResult(val: condition)
             
             if !valueIsBoolean(val: result) {
                 print("cond requires the first argument to be a boolean.")

    override init(env: Environment) {
        super.init(env: env)
        let _ = initBuiltins()
    }
    
    func initBuiltins() -> [String: BuiltinBody] {

            }
            
            if booleanFromValue(val: result) {
                return self.evaluateOrReturnResult(val: truePath!.value)
            } else {
                return self.evaluateOrReturnResult(val: falsePath!.value)
            }
        }
        
