using make shared instead new