diff --git a/TODO b/TODO
index 5fb1956..15b86be 100644
--- a/TODO
+++ b/TODO
@@ -8,19 +8,15 @@ DOCS
STYLE
-- [ ] sharing more styles
-- [ ] css linter?
-
- [ ] touch styles: bigger please!
- [ ] kill hover behavior if touch
+- [x] sharing more styles
+
CLEANLINESS
- [ ] can gui-row be baked into base-controller somehow?
-- [ ] strip component-slider from number-controller
-- [ ] strip component-input from number-controller, unify with string-controller
-
PARITY
- [ ] folders
@@ -34,4 +30,10 @@ PARITY
NEW FEATURES
-- [ ] save server
\ No newline at end of file
+- [ ] save server
+
+NICE TO HAVES
+
+- [ ] css linter?
+- [ ] strip component-slider from number-controller
+- [ ] strip component-input from number-controller, unify with string-controller
\ No newline at end of file
diff --git a/build/gui.html b/build/gui.html
index 81c2844..f9ad348 100644
--- a/build/gui.html
+++ b/build/gui.html
@@ -10,11 +10,11 @@ var e,f,g,h=b.type;if("load"===h&&!b.bubbles){var i=c;i instanceof Q.Document&&(
{{ name }}
{{ comment }}
{{ open ? 'Close' : 'Open' }} Controls
+},_register:function(){c(this.extends)&&!b(this.extends)&&console.warn("%s is attempting to extend %s, an unregistered element or one that was not registered with Polymer.",this.name,this.extends),this.register(this.name,this.extends),this.registered=!0},waitingForPrototype:function(a){return h(a)?void 0:(i(a,this),this.handleNoScript(a),!0)},handleNoScript:function(a){this.hasAttribute("noscript")&&!this.noscript&&(this.noscript=!0,Polymer(a))},waitingForResources:function(){return this._needsResources},waitingForQueue:function(){return f.enqueue(this,this.registerWhenReady,this._register)},loadResources:function(){this._needsResources=!0,this.loadStyles(function(){this._needsResources=!1,this.registerWhenReady()}.bind(this))}});e.publish(e.declaration,j),g(function(){document.body.removeAttribute("unresolved"),document.dispatchEvent(new CustomEvent("polymer-ready",{bubbles:!0}))}),document.registerElement("polymer-element",{prototype:j})}(Polymer),function(){var a=document.createElement("polymer-element");a.setAttribute("name","auto-binding"),a.setAttribute("extends","template"),a.init(),Polymer("auto-binding",{createdCallback:function(){this.syntax=this.bindingDelegate=this.makeSyntax(),Polymer.whenPolymerReady(function(){this.model=this,this.setAttribute("bind",""),this.async(function(){this.marshalNodeReferences(this.parentNode),this.fire("template-bound")})}.bind(this))},makeSyntax:function(){var a=Object.create(Polymer.api.declaration.events),b=this;a.findController=function(){return b.model};var c=new PolymerExpressions,d=c.prepareBinding;return c.prepareBinding=function(b,e,f){return a.prepareEventBinding(b,e,f)||d.call(c,b,e,f)},c}})}();
{{ name }}
{{ comment }}
{{ open ? 'Close' : 'Open' }} Controls
undefined
-
-
-
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/build/gui.js b/build/gui.js
index 35f1233..889ed02 100644
--- a/build/gui.js
+++ b/build/gui.js
@@ -10,11 +10,11 @@ document.write(['
{{ name }}
{{ comment }}
{{ open ? 'Close' : 'Open' }} Controls
',
+'},_register:function(){c(this.extends)&&!b(this.extends)&&console.warn("%s is attempting to extend %s, an unregistered element or one that was not registered with Polymer.",this.name,this.extends),this.register(this.name,this.extends),this.registered=!0},waitingForPrototype:function(a){return h(a)?void 0:(i(a,this),this.handleNoScript(a),!0)},handleNoScript:function(a){this.hasAttribute("noscript")&&!this.noscript&&(this.noscript=!0,Polymer(a))},waitingForResources:function(){return this._needsResources},waitingForQueue:function(){return f.enqueue(this,this.registerWhenReady,this._register)},loadResources:function(){this._needsResources=!0,this.loadStyles(function(){this._needsResources=!1,this.registerWhenReady()}.bind(this))}});e.publish(e.declaration,j),g(function(){document.body.removeAttribute("unresolved"),document.dispatchEvent(new CustomEvent("polymer-ready",{bubbles:!0}))}),document.registerElement("polymer-element",{prototype:j})}(Polymer),function(){var a=document.createElement("polymer-element");a.setAttribute("name","auto-binding"),a.setAttribute("extends","template"),a.init(),Polymer("auto-binding",{createdCallback:function(){this.syntax=this.bindingDelegate=this.makeSyntax(),Polymer.whenPolymerReady(function(){this.model=this,this.setAttribute("bind",""),this.async(function(){this.marshalNodeReferences(this.parentNode),this.fire("template-bound")})}.bind(this))},makeSyntax:function(){var a=Object.create(Polymer.api.declaration.events),b=this;a.findController=function(){return b.model};var c=new PolymerExpressions,d=c.prepareBinding;return c.prepareBinding=function(b,e,f){return a.prepareEventBinding(b,e,f)||d.call(c,b,e,f)},c}})}();
{{ name }}
{{ comment }}
{{ open ? 'Close' : 'Open' }} Controls
',
'
undefined
',
'',
'',
-'
',
-'
',
-'
',
-'
',].join("\n"))
\ No newline at end of file
+'
',
+'
',
+'
',
+'
',].join("\n"))
\ No newline at end of file
diff --git a/docs/style.styl b/docs/style.styl
index 6f0c24e..0e1907e 100644
--- a/docs/style.styl
+++ b/docs/style.styl
@@ -1,4 +1,4 @@
-@import '../elements/shared.styl';
+@import '../elements/shared/shared';
unit = 18px
body-padding = unit * 2;
diff --git a/elements/controller-boolean/controller-boolean.html b/elements/controller-boolean/controller-boolean.html
index 3e08b50..5a4cac2 100644
--- a/elements/controller-boolean/controller-boolean.html
+++ b/elements/controller-boolean/controller-boolean.html
@@ -7,6 +7,7 @@
+