the map is of unique_ptr<Element> instead of Element*