uses pointer to struct for satisfying image interface now