made NewGeneral allocate when data==nil