fetcher: create separate Base, SSH, and Git classes. cleaner abstraction.