support reading from specified source