maybe throw an exception in an `else` block?