       {:reply, {:error, :not_running}, state }
     end
   end
+  def handle_call({:method_caller}, _from, state) do
+    {:reply, state.method_caller, state}
+  end
+  def handle_call({:get, id}, _from, state) do
+    {:reply, Map.get(state.running, id, {:error, :unknown_cmd}), state}
+  end
 end

  Example:

    iex> {:ok, cmd} = start("serverboards.test.auth/auth.test")
    iex> Serverboards.IO.Cmd.call cmd, "ping"
    "pong"
    iex> stop("serverboards.test.auth/auth.test")
    :ok

  Or if does not exist:

  def start(plugin_component_id), do: start(Serverboards.Plugin.Runner, plugin_component_id)

  def stop(runner, id) do
    case GenServer.call(runner, {:stop, id}) do # stop is almost a pop, so that caller works more then runner server
      {:error, e} ->
        Logger.error("Error stoping component #{inspect e}")
        {:error, e}
