My dynamic button evaluates as soon as it’s created. How do I stop this behavior?

I think I finally hit on the holy grail of buttons. I coded a dynamic autosave button whose duration and frequency can be set all the while showing very useful dynamic real time information directly in the label (button name, countdown in seconds, "saved" and beep alert when saved) without freezing the frontend or tying up the kernel. And get this, it even works when the button scrolls off screen. I have no idea how I got it to do that.

There is just one little snag. They autosave starts as soon as the button is created. No need to click or hover over it. Please help me fix this odd behavior.

There is just one more little teeny tiny thing if you don’t mind. I would like to anchor the code to a function like this dynaSave[s_,n_]:= DynamicModule[...]but it produces syntax errors.

(* dynaSave button works but oddly evaluates when created *)  Quiet@Remove["Global`*"];  DynamicModule[{   s = 10, n = Infinity, col1 = Black, col2 = RGBColor[.2, .65, .2],    bg = RGBColor[.775, .85, 1]   },  ops := Sequence[AutoAction -> True, ImageSize -> {80, 30},     Appearance -> "Palette",     BaseStyle -> {14, col1, Bold, FontFamily -> "Arial"},     Background -> bg];  actions := (NotebookSave[];Beep[];Style["SAVED", Bold, col2]);   actionclock[f_, g_] :=    Dynamic[t = f - Clock[{0, f, 1}, f, g]; If[t == 0, actions, t]];  Button[Dynamic[x, (#) &,     Initialization :> (x := "DynaSave")], (x := actionclock[s, n]) &,    ops]   ]