After working with a heavily geared down stepper I finally realised (yes we don't all live in the USA) why my code was broken.
The Stepper library included runs independently and has no feed back mechanism.
simply adding a is running flag to the class fixes this.
Allowing my code to wait for the stepper to finish.