+template Object *Layout::pick<Object>(const Ray &);
+template Track *Layout::pick<Track>(const Ray &);
+template Signal *Layout::pick<Signal>(const Ray &);
+template Vehicle *Layout::pick<Vehicle>(const Ray &);
+
+void Layout::remove(Object &o)
+{
+ if(objects.erase(o))
+ signal_object_removed.emit(o);
+}
+
+void Layout::remove(Track &t)
+{
+ if(objects.erase(t))
+ {
+ // Blocks must be recreated first
+ create_blocks(t);
+ signal_object_removed.emit(t);
+ }
+}
+
+void Layout::remove(TrackChain &g)
+{
+ if(track_chains.erase(g))
+ signal_track_chain_removed.emit(g);
+}
+
+void Layout::remove(Sensor &s)
+{
+ sensors.erase(s);
+}
+