add viewport getter
templatize Vec args to methods