vcs: separated concerns