Remove throw IllegalArgumentException from method, add special cases.