refactor code and fixed(add?) animate highlight bug