       { b, c } = try
         {result, new_binding} = Erlang.elixir.eval(code.to_char_list, @binding)
         IO.puts Code::Formatter.format_object(result)
-        { new_binding, "" }
+        { wrap_self(new_binding), "" }
       catch 'error: {'badsyntax, {_, _, _, ""}}
         { @binding, code }
       catch kind: error

    Process.spawn -> #IEX::Behavior().loop
  end

  module Behavior
    mixin Code::Formatter

    def __bound__
      @('binding: [], 'codecache: "")
    end

    def loop


      @('binding: b, 'codecache: c).loop
    end

    private

    def wrap_self(rest)
      [{'self,#IEX::Context()}|rest]
    end
  end
end