update with threads