Fix #102
Less implementation and more tests is better code.
These changes have been sitting around forever, but they look sensible so...
Fix #100, fatal runtime assertions are an antipattern.