it is interesting that `checkbox.checked` won't trigger `checkbox.onchange` by itself xD