Matei: multiple optimisations + added hammer.js for touch implementations.