Don't allow mode looping
Don't use private variables
Cleanup styles, refactor setViewport