implement content viewer