added a better gesture support