moved init and checking for valid in to CDDiscountObject