revamped the settings parser to handle defaults better