add some improvements and swipe support