user defined constructor