basic framework. need to implement camera class and renderer classes.