Problem: nodrop code is ugly

It's bad practice to start by testing all exceptional conditions
and then dropping through to the 'normal' condition. Apart from
being inefficient, it's deceptive to the user. Conditional code
should always try to show the natural expectation of the code,
with exceptional cases coming last.

Solution: clean up this code.
Merge pull request #1171 from hintjens/master

Problem: nodrop code is ugly