Implement named guards for #8.

This required using getter methods for various property methods so
defaults are used when the property has not been specified.