add viewport packet handling