move onchange
remove unused