Mms proposed updates

These are my proposed updates, mostly reflecting the things that I've been doing without documenting them. Feel free to tear them apart. I'll annotate changes that I think need explanation.
This seems dumb to me. Fail and raise are synonyms (a massive misfeature in Ruby, if you ask me). I think the one thing people should keep in mind when raising errors is to do so only as a last resort, because raising/catching is a lot more expensive than if/elsing.