A general-purpose, flexible construct that becomes the building blocks of your program's code and can also provide member wise initializers. Unlike a 'class', they are always copied when they are passed around in your code and as such, do not use automatic reference counting. In addition, they do not: use inheritance; allow type casting at runtime; have, or use, deinitializers.