Now and again you might want to extract out complex logic into its own class and access instances of shared functionality via your Helpers and Events. Ideally what I want to do is create an instance in the created hook and then make use of that instance in the Helpers and Events. This is the solution I came up with - I’m not sure if it’s the correct approach but I haven’t seen anything better yet.

 function MySharedFunctionaity() {
   this.counter = new ReactiveVar(0);

   this.nextCounter = function() {
     this.counter.set(this.counter + 1);
   };

   this.getCounter = function() {
     return this.counter.get();
   };
 }

 Template.myTemp.created = function() {
   this.sharedFunc = new MySharedFunctionaity();
 }

 Template.myTemp.events({
   ‘click #increment’: function(e, template) {
     template.sharedFunc.nextCounter();
   }
 });

 Template.myTemp.helpers({
   ctr: functuon() {
     var template = UI._templateInstance();
     return template.sharedFunc.getCounter();
   }
 });

Feel free to correct me, with a comment below, if there is a better approach.

UPDATE: Changed MySharedFunctionaity to use ReactiveVar.