Split lazy loading into a much more robust "model" class
Split out YamlModel and associated into yaml_model module