added is.any and is.optional