implemented the evaluation mechanism as an iterative loop with a big switch (TCO is now correctly managed). fixed the closure handling with the use of shared pointers (std::shared_ptr). introduced messages for runtime errors. created a new namespace for utility functions