Add EventDispatcher and more template fun