now with overridable timing function for external sync