revert back to use IllegalArgumentException