More better animation logic (not tested)