Don't wrap refresh in a transaction or a deadlock can occur.  Improve code reuse