add run with lock