extract abstract base class for both impls, while trying to figure out how to make checks using paths relative to the gitignore file.