Move VCS code to separate module

\+ core cleanups