smarter update detection