(function(app) {
  'use strict';

  var dom = app.dom || require('../dom.js');
  var Button = app.Button || require('./button.js');

  var LoadButton = Button.inherits(function(props) {
    this.loader = props.loader;

    this.registerChangeListener();
  });

  LoadButton.prototype.inputElement = function() {
    return this.childElement('.button-input');
  };

  LoadButton.prototype.registerChangeListener = function() {
    dom.on(this.inputElement(), 'change', LoadButton.prototype.onchange.bind(this));
  };

  LoadButton.prototype.resetInput = function() {
    dom.value(this.inputElement(), '');
  };

  LoadButton.prototype.ontap = function() {
    dom.click(this.inputElement());
  };

  LoadButton.prototype.onchange = function(event) {
    var file = dom.file(dom.target(event));
    if (file) {
      this.loader(file);
      this.resetInput();
    }
  };

  if (typeof module !== 'undefined' && module.exports) {
    module.exports = LoadButton;
  } else {
    app.LoadButton = LoadButton;
  }
})(this.app || (this.app = {}));

@@ -124,16 +124,78 @@
 on.js');
+%0A  var Component = app.Component %7C%7C require('./component.js');
 %0A%0A  var 
@@ -254,112 +254,229 @@
 his.
-loader = props.loader;%0A%0A    this.registerChangeListener();%0A  %7D);%0A%0A  LoadButton.prototype.inputElemen
+input = new LoadButton.Input(%7B%0A      element: this.childElement('.button-input'),%0A      loader: props.loader,%0A    %7D);%0A  %7D);%0A%0A  LoadButton.prototype.ontap = function() %7B%0A    this.input.click();%0A  %7D;%0A%0A  LoadButton.Inpu
 t = 
+(
 func
@@ -492,69 +492,146 @@
     
-return this.childElement('.button-input'
+var Input = Component.inherits(function(props) %7B%0A      this.loader = props.loader;%0A      this.registerChangeListener(
 );%0A
+  
   %7D
+)
 ;%0A%0A  
+ 
-LoadButton
+ Input
 .pro
@@ -675,24 +675,26 @@
 ion() %7B%0A    
+ 
+ 
 dom.on(this.
@@ -689,30 +689,25 @@
 dom.on(this.
-inputE
+e
 lement(), 'c
@@ -714,26 +714,21 @@
 hange', 
-LoadButton
+Input
 .prototy
@@ -748,32 +748,34 @@
 ind(this));%0A
+  
   %7D;%0A%0A  
 LoadButton.p
@@ -758,34 +758,31 @@
 ;%0A    %7D;%0A%0A  
-LoadButton
+  Input
 .prototype.r
@@ -780,26 +780,21 @@
 ototype.
-resetInput
+click
  = funct
@@ -809,37 +809,34 @@
     
+  
 dom.
-value
+click
 (this.
-inputE
+e
 lement()
 , ''
@@ -835,23 +835,21 @@
 nt()
-, ''
 );%0A
+  
   %7D;%0A%0A  
 Load
@@ -840,34 +840,31 @@
 ;%0A    %7D;%0A%0A  
-LoadButton
+  Input
 .prototype.o
@@ -854,37 +854,37 @@
 Input.prototype.
-ontap
+reset
  = function() %7B%0A
@@ -891,37 +891,34 @@
     
+  
 dom.
-click
+value
 (this.
-inputE
+e
 lement()
 );%0A 
@@ -913,27 +913,33 @@
 lement()
+, ''
 );%0A
+  
   %7D;%0A%0A  
 LoadButt
@@ -926,34 +926,31 @@
 ;%0A    %7D;%0A%0A  
-LoadButton
+  Input
 .prototype.o
@@ -973,24 +973,26 @@
 on(event) %7B%0A
+  
     var file
@@ -1027,16 +1027,18 @@
 ));%0A    
+  
 if (file
@@ -1037,24 +1037,26 @@
 if (file) %7B%0A
+  
       this.l
@@ -1070,24 +1070,26 @@
 ile);%0A      
+  
 this.resetIn
@@ -1090,25 +1090,22 @@
 eset
-Input
 ();%0A
+  
     %7D%0A  
 %7D;%0A%0A
@@ -1100,17 +1100,46 @@
     %7D%0A  
-%7D
+  %7D;%0A%0A    return Input;%0A  %7D)()
 ;%0A%0A  if 

Make input component of load-button