introduce new object Viewer, change existing code to new oncept
fighting with javascript 'this' object, solved with Function.call and Function.bind
- condition to stop updating viewer if model has been changed