adding animation and some other crazy stuffs