Add pop-in animation + refactor the animation module in a more flexible way

Close #11