basic implementation of common viewer mixin