Split out different source fetchers into separate classes