animation refactor