added final & finalize and enum progs
refactored and updated exceptions