photo driver abstraction