```cs public abstract class Primitive { public MaterialType material; } ``` This is a base abstract class for all Primitives. `material` must be set to anything other than `MaterialType.Air`. Any property on any primitive can be changed at any time on the main thread, because the background raytracing threads operate on a copy of these primitives. When the background threads finish running, all changes will be propagated to these copies.