add local storage support