abstracting media viewer by media type