will need to use a builder to profit of make_shared