clean up: error handling is reviewed/restructured - all errors are immutable now