now with touch and viewport