initial implementation of browser.internal via viewer