diff --git a/examples/thirdorderblwdf.py b/examples/thirdorderblwdf.py
index 117041fcecaf2d9e49df26c46363b15c26266119..df19a1ed59b09c45845223924c0cc691226d289d 100644
--- a/examples/thirdorderblwdf.py
+++ b/examples/thirdorderblwdf.py
@@ -5,9 +5,13 @@ Third-order Bireciprocal LWDF
 
 Small bireciprocal lattice wave digital filter.
 """
+import numpy as np
+from mplsignal.freq_plots import freqz_fir
+
 from b_asic.core_operations import Addition, SymmetricTwoportAdaptor
 from b_asic.schedule import Schedule
 from b_asic.signal_flow_graph import SFG
+from b_asic.signal_generator import Impulse
 from b_asic.simulation import Simulation
 from b_asic.special_operations import Delay, Input, Output
 
@@ -21,19 +25,28 @@ a = s.output(0) + D0
 out0 = Output(a, "y")
 
 sfg = SFG(inputs=[in0], outputs=[out0], name="Third-order BLWDF")
+# %%
+# The SFG looks like
+sfg
 
-# Set latencies and exection times
+# %%
+# Set latencies and execution times
 sfg.set_latency_of_type(SymmetricTwoportAdaptor.type_name(), 4)
 sfg.set_latency_of_type(Addition.type_name(), 1)
 sfg.set_execution_time_of_type(SymmetricTwoportAdaptor.type_name(), 1)
 sfg.set_execution_time_of_type(Addition.type_name(), 1)
 
-sim = Simulation(sfg, [lambda n: 0 if n else 1])
+# %%
+# Simulate
+sim = Simulation(sfg, [Impulse()])
 sim.run_for(1000)
 
-import numpy as np
-from mplsignal.freq_plots import freqz_fir
 
+# %%
+# Display output
 freqz_fir(np.array(sim.results['0']) / 2)
 
+# %%
+# Create and display schedule
 schedule = Schedule(sfg, cyclic=True)
+schedule.show()