refactor animate mixin