move to callbacks, fix animation, improve speed