differentor and throw exception done