more reusable viewer