reduce subdue code duplication, simplify the exception method