support multiple ranges