Theta provides a rich set of built-in types, and users can define new, abstract types. Users can also define new routines. Methods and routines can be either procedures or iterators, and when called may either terminate normally or by signaling an exception. Both types and routines can be parameterized on one or more parameter types.
Objects come into existence as a result of calls to certain methods and routines that create new objects. Storage for objects that can no longer be accessed is reclaimed automatically by the garbage collector.