handler should only be assigned once, otherwise will get duplicate callbacks