updating versionizer with separation of data vs side-effects, adding unit tests