TODO images URLs and JSON strings from the URL
allow image to be set with url query parameter
over 300LOC now
not sure why this doesn't work