added Hash type; cleaned up validation; validates against raw value first now, and on exception, tries the converted value
more work on fleshing out documentation