added a ctor to autogenerate an id