rewritten timesynced to use gather