moved ViewerService to core