diff --git a/Project.toml b/Project.toml
index b269d45..7b1c88e 100644
--- a/Project.toml
+++ b/Project.toml
@@ -15,7 +15,7 @@ REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
 CodeTracking = "0.5.7, 1"
 Crayons = "4.1"
 Highlights = "0.4.3, 0.5"
-JuliaInterpreter = "0.9.46"
+JuliaInterpreter = "0.10"
 julia = "1.6"
 
 [extras]
diff --git a/src/Debugger.jl b/src/Debugger.jl
index 9cb0ee4..b9b59bc 100644
--- a/src/Debugger.jl
+++ b/src/Debugger.jl
@@ -12,7 +12,7 @@ using REPL.REPLCompletions
 
 using CodeTracking
 using JuliaInterpreter: JuliaInterpreter, Frame, lookup, FrameCode, BreakpointRef, debug_command, leaf, root, BreakpointState,
-                        finish_and_return!, Compiled
+                        finish_and_return!, Interpreter, NonRecursiveInterpreter, RecursiveInterpreter
 
 using JuliaInterpreter: pc_expr, moduleof, linenumber, extract_args, locals,
                         root, caller, whereis, get_return, nstatements, getargs
@@ -43,7 +43,7 @@ Base.@kwdef mutable struct DebuggerState
     broke_on_error::Bool = false
     watch_list::Vector = WATCH_LIST
     lowered_status::Bool = false
-    mode = finish_and_return!
+    interp::Interpreter = RecursiveInterpreter()
     repl = nothing
     terminal = nothing
     main_mode = nothing
@@ -53,7 +53,7 @@ Base.@kwdef mutable struct DebuggerState
 end
 
 function toggle_mode(state)
-    state.mode = (state.mode === finish_and_return! ? (state.mode = Compiled()) : (state.mode = finish_and_return!))
+    state.interp = (state.interp === RecursiveInterpreter() ? (state.interp = NonRecursiveInterpreter()) : (state.interp = RecursiveInterpreter()))
 end
 
 toggle_lowered(state) = state.lowered_status = !state.lowered_status
diff --git a/src/commands.jl b/src/commands.jl
index bc38666..7e4fa1a 100644
--- a/src/commands.jl
+++ b/src/commands.jl
@@ -43,7 +43,7 @@ function execute_command(state::DebuggerState, v::Union{Val{:c},Val{:nc},Val{:n}
     assert_allow_step(state) || return false
     cmd == "so" && (cmd = "finish")
     cmd == "u" && (cmd = "until")
-    ret = debug_command(state.mode, state.frame, Symbol(cmd); kwargs...)
+    ret = debug_command(state.interp, state.frame, Symbol(cmd); kwargs...)
     if ret === nothing
         state.overall_result = get_return(root(state.frame))
         state.frame = nothing
diff --git a/src/repl.jl b/src/repl.jl
index 419ddc4..e48fb40 100644
--- a/src/repl.jl
+++ b/src/repl.jl
@@ -29,7 +29,7 @@ function RunDebugger(frame, repl = nothing, terminal = nothing; initial_continue
     normal_prefix = Sys.iswindows() ? "\e[33m" : "\e[38;5;166m"
     compiled_prefix = "\e[96m"
     panel = LineEdit.Prompt(promptname(state.level, "debug");
-        prompt_prefix = () -> state.mode == Compiled() ? compiled_prefix : normal_prefix,
+        prompt_prefix = () -> state.interp == NonRecursiveInterpreter() ? compiled_prefix : normal_prefix,
         prompt_suffix = Base.text_colors[:normal],
         on_enter = s->true)
 
diff --git a/test/misc.jl b/test/misc.jl
index be62658..8acf81c 100644
--- a/test/misc.jl
+++ b/test/misc.jl
@@ -3,7 +3,7 @@
 using Debugger: _iscall
 using JuliaInterpreter
 using JuliaInterpreter: pc_expr, evaluate_call!, finish_and_return!, enter_call_expr
-runframe(frame::Frame, pc=frame.pc[]) = Some{Any}(finish_and_return!(Compiled(), frame))
+runframe(frame::Frame, pc=frame.pc[]) = Some{Any}(finish_and_return!(NonRecursiveInterpreter(), frame))
 
 frame = @make_frame map(x->2x, 1:10)
 state = dummy_state(frame)