Added CachedSiteSource class

also reworked related classes