better constructor rename suppor and do not support destructor