rethinking animation logic