add fetch caching
refactor view loading