Big chances on the structure, goodbye TRawMaterial, welcome TProduct. This revision won't compile, it's just a 'to be continued' rev.