no more constructors

new_xxx() calls init_xxx(alloc_object(xxx_type))
For derived types, init functions must manually call super init
functions
destroy() only called in top-level object

For derived types, you must call super destroy_superxxx() by hand at
the end of destroy_xxx()
simplified deepcopy()

For derived types, you must call super initcopy by hand