better encapsulation; working towards supporting multiple viewers