ray3 improvements and comments
Struct definition now requires a brand name as the first argument