implement Product8