execute on a different thread so it doesn't share the lock