separate YAML parsing from config merging