optimization to viewport