use jquery deferred to chain the initial runs instead of timers