Refactored: now using less events and more data binding magic