add exception
the final version