added throw exception