animation refact. in progress