add touch listener