Refactored almost from scratch. Tap event now has a 'click' event fallback