update: add exception handler