Performance optimization: create Entities by using make_shared with the help of a workaround instantiation function (make_shared cannot be used to allocate objects with with private ctor directly).