var Question = (function () {

    var  answered, answer, questionData;

    function Question(_questionData) {
        answered = false;
        questionData = _questionData;
        this.clockTimer =  null;

    }

    Question.prototype.wasAnswered = function(){
        return answered;
    }
    Question.prototype.getAnswer = function(){
        return answer;
    }
    Question.prototype.printQuestion = function (handler) {

        var answerData, answerHTML, answerList, element, questionHTML, _i, _len, _ref;
        questionHTML = $("#question").clone();
        questionHTML.find(".questionText").html(questionData.questionText);
        answerHTML = questionHTML.find(".answer").remove();
        answerList = questionHTML.find(".answerList");
        _ref = $.shuffle(questionData.answers);
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
            answerData = _ref[_i];
            element = answerHTML.clone().html(answerData.text);
            element.attr("data-valid", answerData.valid);
            answerList.append(element);
        }
        delete answersHTML;
        questionHTML.css('display', '');
        $("#questionWrapper").html(questionHTML.html());


        this.bindAnswer(handler);
        this.timer(30, handler);
    };

    Question.prototype.destroy = function(){
        clearInterval(this.clockTimer);
    }
    Question.prototype.timer = function (seconds, handler) {
        $(".timer").html(seconds);
        if (seconds == 0) {
            $(".timer").html('');
            answered = false;
            answer = false;
            if ($.isFunction(handler)) {
                handler();
            }
        }
        else {
            seconds--;
            var self = this;
            this.clockTimer = setTimeout(function(){
                self.timer(seconds, handler);
            }, 1000);
        }
    }
    Question.prototype.bindAnswer = function (handler) {
        if($('#questionWrapper').length){
            $('#questionWrapper').off('click').on('click', '.answer',function (event) {
                event.preventDefault();
                answer = $(this).data('valid');
                answered = true;
                $(this).closest("#questionWrapper").html('');
                if ($.isFunction(handler)) {
                    handler();
                }
            });
        }else{
            alert('falló porque todavia no existen las preguntas');
        }


    };

    return Question;

})();

@@ -423,24 +423,184 @@
 handler) %7B%0A%0A
+        var whenAvailableTemplate = function(template)%7B%0A            if(typeof  template === 'string')%7B%0A%0A                var questionHTML = $(template);%0A        
         var 
@@ -647,22 +647,8 @@
 ent,
- questionHTML,
  _i,
@@ -660,24 +660,25 @@
 , _ref;%0A
+%0A
         
 question
@@ -673,47 +673,8 @@
     
-questionHTML = $(%22#question%22).clone();%0A
     
@@ -741,24 +741,32 @@
 stionText);%0A
+        
         answ
@@ -809,24 +809,32 @@
 ).remove();%0A
+        
         answ
@@ -876,16 +876,24 @@
 List%22);%0A
+        
         
@@ -940,16 +940,24 @@
         
+       
+ 
 for (_i 
@@ -1008,24 +1008,32 @@
             
+        
 answerData =
@@ -1051,24 +1051,32 @@
             
+     
+   
 element = an
@@ -1123,24 +1123,32 @@
             
+        
 element.attr
@@ -1185,32 +1185,40 @@
 d);%0A            
+    
+    
 answerList.appen
@@ -1237,26 +1237,36 @@
         
-%7D%0A
+        %7D%0A  
         
 delete a
@@ -1257,16 +1257,22 @@
         
+      
 delete a
@@ -1283,24 +1283,25 @@
 rsHTML;%0A
+%0A
         
 question
@@ -1296,41 +1296,8 @@
     
-questionHTML.css('display', '');%0A
     
@@ -1359,21 +1359,24 @@
         
-this.
+        
 bindAnsw
@@ -1396,21 +1396,24 @@
         
+    
-this.
+    
 timer(30
@@ -1417,26 +1417,131 @@
 (30, handler
-);
+, this);%0A%0A            %7D%0A        %7D%0A%0A        $.getTemplate('tpl/question.html').done(whenAvailableTemplate);%0A
 %0A    %7D;%0A%0A   
@@ -1632,39 +1632,13 @@
   %7D%0A
+%0A
     
-Question.prototype.timer = 
 func
@@ -1642,16 +1642,21 @@
 unction 
+timer
 (seconds
@@ -1660,24 +1660,34 @@
 nds, handler
+, question
 ) %7B%0A        
@@ -1971,24 +1971,26 @@
             
+//
 var self = t
@@ -1998,36 +1998,40 @@
 is;%0A            
-this
+question
 .clockTimer = se
@@ -2071,13 +2071,8 @@
     
-self.
 time
@@ -2085,24 +2085,34 @@
 nds, handler
+, question
 );%0A         
@@ -2148,49 +2148,27 @@
     
-Question.prototype.bindAnswer = function 
+function bindAnswer
 (han

use getTemplate to questions