animation

replace tab
std::function instead of function pointer
change some api names