introduction of GCViewerController
refactor design to use "model view controller" paradigma (#87)