cache singles in local storage... load from server only if have empty