refact to support multiple sources and screenshots