# Registering an object type

The are two principal paths to take when registering a new type, either the type is a reference type that is located in dynamic memory, or the type is a value type that is located on the stack. Complex types are usually registered as reference types, while simple types that are meant to be used as primitives are registered as value types. A reference type support object handles (unless restricted by application), but cannot be passed by value to application registered functions, a value type doesn't support handles and can be passed by value to application registered functions.

- Registering a reference type
- Registering a value type
- Registering operator behaviours
- Registering object methods
- Registering object properties