add support for drag minimum distance, simplify event listeners