refactor
fix viewport controls