rewrite new() with a critical section
rewrite sync() with try:finally
get config reader direct from git.Repo()