better viewport updates