reuse thrower function