backed out smart constructor replacement