constructor called product