updated with shake gestures