restructure: add animation back