Add an abstraction for vcs