clean up and exception or return value distinguishing