support multiple input sources