update config spec to expect structs rather than plain hashes