improved control flow for destruct, added single NilInstance, added compiler macros