introduced a VersionedResource class that keeps an updated version of some abstract resource