uses external json instead of localstorage