add animation and localStorage support