Split out the root pages interface and added higher level caching