 
 public func storeInEnv(elements: ArraySlice<Element>, env: Env) -> Element {
     if elements.count == 2 {
-        env.store(elements[0], value: elements[1])
+        env.store(elements[0], value: eval(elements[1], env))
         return elements[1]
     } else {
         return .NilEl

        case .SymbolEl("="): return evalTwo(rest, eq)
        case .SymbolEl("<"): return evalTwo(rest, <)
        case .SymbolEl("<="): return evalTwo(rest, <=)
        case .SymbolEl("define"): return storeInEnv(rest, env)
        default: return .NilEl
        }
    }

            return evalProgn(restUneval, env)
        } else if f == .SymbolEl("let") {
            return evalLet(restUneval, env)
        } else if f == .SymbolEl("define") {
            return storeInEnv(restUneval, env)
        }
        
        // post eval functions
