why do we have both keyup and keypress handlers ?