added own exceptions
use own exceptions