asclass DynFlexibleRateTimer > DynModule { FlexibleRateTimer timer = new(1); transient SimpleLiveValue lvRate; // call timer.setRunnableAndStart in subclass's start method! start { timer.onFrequencyChanged(r persistMe); lvRate = lvFlexibleRateTimerFreq(timer); } visualize { ret northAndCenterWithMargins( withLabelLeftAndRight("Rate:", jLiveValueTextField_bothWays(lvRate), "Hz"), mainPanel()); } JComponent mainPanel() { ret dm_printLogComponent(); } void cleanMeUp_DynFlexibleRateTimer { cleanUp(timer); } }