copied hammer.js