add logic and gestureRecognizer