     end
   end
 
-  @tag timeout: 1_000
-  test "observe with a failing plugin" do
+  setup context do
+    IO.inspect(context)
     # need process flag, because Observer will crash
     Process.flag(:trap_exit, true)
     {:ok, listener} = TestListener.start()
     GenStage.sync_subscribe(listener, to: Baumeister.EventCenter)
-    {:ok, pid} = Observer.start_link(FailPlugin, :ok)
+    {:ok, pid} = Observer.start_link(context[:test])
     assert is_pid(pid)
 
+    # merge this with the context
+    [pid: pid, listener: listener]
+  end
+
+  @tag timeout: 1_000
+  test "observe with a failing plugin", context do
+    pid = context[:pid]
+    listener = context[:listener]
+
+    Observer.configure(pid, FailPlugin, :ok)
     :ok = Observer.run(pid)
-    # Process.sleep(10)
+
     wait_for fn -> length(TestListener.get(listener)) >= 2 end
 
     l = TestListener.get(listener)

  # * Think carefully about nesting of plugins to enable
  #   timings, delays, ... Similar to the Plug-Concept.

end

  alias Baumeister.Observer
  alias Baumeister.Observer.FailPlugin
  alias Baumeister.Observer.NoopPlugin
  alias Baumeister.Observer.Take

  def wait_for(pred) do
    case pred.() do
