viewport implementatio