- Everything is defined as its own scope/container/node
- All data moves through pipelines
-Execution hooks and compiler directives are used to explicitly define behaviour
- Nothing is null and types are not optional
- Potential errors can be declared and must be handled