+void Catalogue::Loader::ballast_profile()
+{
+ load_sub(obj.ballast_profile);
+}
+
+void Catalogue::Loader::gauge(float g)
+{
+ obj.gauge = g/1000;
+}
+
+void Catalogue::Loader::layout()
+{
+ load_sub(obj.layout);
+}
+
+void Catalogue::Loader::locomotive(unsigned art_nr)
+{
+ if(obj.locos.count(art_nr))
+ throw Exception("Duplicate locomotive number");
+
+ RefPtr<LocoType> loco = new LocoType(art_nr);
+ load_sub(*loco);
+ obj.locos[art_nr] = loco.release();
+}
+
+void Catalogue::Loader::rail_profile()
+{
+ load_sub(obj.rail_profile);
+}
+
+void Catalogue::Loader::scale(float n, float d)
+{
+ obj.scale = n/d;
+}
+
+void Catalogue::Loader::track(unsigned art_nr)