more comments, use IOException instead of IllegalParameterException