Index: Dev/trunk/client/qed/css/forms.less
===================================================================
--- Dev/trunk/client/qed/css/forms.less	(revision 433)
+++ Dev/trunk/client/qed/css/forms.less	(revision 434)
@@ -20,9 +20,4 @@
     }
 
-    .newline {
-        .newLine;
-        display: block;
-    }
-
     .floatRight {
         float: right;
@@ -36,7 +31,6 @@
 
     .qedLabel {
+        width: 150px;
         display: inline-block;
-        float: left;
-        width: 150px;
     }
 
Index: Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less
===================================================================
--- Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less	(revision 434)
+++ Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less	(revision 434)
@@ -0,0 +1,18 @@
+#rft.claro .qedScaleWidget {
+    table {
+        text-align: center;
+    }
+    th { font-weight: normal; }
+    .item {
+        text-align: left;
+        min-width: 10em;
+        max-width: 15em;
+    }
+    .min { text-align: right; padding-left: 2em; }
+    .max { text-align: left;  padding-right: 2em; }
+    .na { text-align: center; }
+
+    .dijitTextBox {
+        width: 10em;
+    } 
+}
Index: Dev/trunk/client/qed/css/qed.css
===================================================================
--- Dev/trunk/client/qed/css/qed.css	(revision 433)
+++ Dev/trunk/client/qed/css/qed.css	(revision 434)
@@ -967,40 +967,32 @@
 /* line 22, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
 @media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000322}}
-#rft.claro .newline {
-  float: left;
-  clear: left;
-  display: block;
-}
-/* line 27, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000327}}
 #rft.claro .floatRight {
   float: right;
   margin: 0 0 0 0;
 }
-/* line 33, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000333}}
+/* line 28, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000328}}
 #rft.claro .qedInfo {
   max-width: 500px;
 }
+/* line 32, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000332}}
+#rft.claro .qedLabel {
+  width: 150px;
+  display: inline-block;
+}
 /* line 37, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
 @media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000337}}
-#rft.claro .qedLabel {
-  display: inline-block;
-  float: left;
-  width: 150px;
-}
-/* line 43, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000343}}
 #rft.claro .qedField {
   max-width: 350px;
   display: inline-block;
 }
-/* line 48, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000348}}
+/* line 42, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000342}}
 #rft.claro .qedField.qedFill {
   width: 350px;
 }
-/* line 52, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000352}}
+/* line 46, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/forms.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/forms\.less}line{font-family:\0000346}}
 #rft.claro .qedFieldset {
   margin: 1em 0px;
@@ -1688,36 +1680,42 @@
   height: 0;
 }
-/* line 2, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\000032}}
+/* line 2, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\000032}}
 #rft.claro .qedScaleWidget table {
   text-align: center;
 }
-/* line 5, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\000035}}
+/* line 5, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\000035}}
 #rft.claro .qedScaleWidget th {
   font-weight: normal;
 }
-/* line 6, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\000036}}
+/* line 6, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\000036}}
 #rft.claro .qedScaleWidget .item {
   text-align: left;
-  max-width: 20em;
-}
-/* line 10, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\0000310}}
+  min-width: 10em;
+  max-width: 15em;
+}
+/* line 11, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\0000311}}
 #rft.claro .qedScaleWidget .min {
   text-align: right;
   padding-left: 2em;
 }
-/* line 11, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\0000311}}
+/* line 12, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\0000312}}
 #rft.claro .qedScaleWidget .max {
   text-align: left;
   padding-right: 2em;
 }
-/* line 12, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/widgets/ScaleWidget.less */
-@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/widgets\/ScaleWidget\.less}line{font-family:\0000312}}
+/* line 13, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\0000313}}
 #rft.claro .qedScaleWidget .na {
   text-align: center;
+}
+/* line 15, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/ScaleWidget.less */
+@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/hendrik\/gamelab\/qed\.svn\/Dev\/trunk\/client\/qed\/css\/model\/widgets\/ScaleWidget\.less}line{font-family:\0000315}}
+#rft.claro .qedScaleWidget .dijitTextBox {
+  width: 10em;
 }
 /* line 3, /home/hendrik/gamelab/qed.svn/Dev/trunk/client/qed/css/model/widgets/QuestionListView.less */
Index: Dev/trunk/client/qed/css/qed.less
===================================================================
--- Dev/trunk/client/qed/css/qed.less	(revision 433)
+++ Dev/trunk/client/qed/css/qed.less	(revision 434)
@@ -30,5 +30,5 @@
 @import "widgets/InlineButton.less";
 @import "widgets/LineWithActions.less";
-@import "widgets/ScaleWidget.less";
+@import "model/widgets/ScaleWidget.less";
 @import "model/widgets/QuestionListView.less";
 
Index: Dev/trunk/client/qed/css/widgets/ScaleWidget.less
===================================================================
--- Dev/trunk/client/qed/css/widgets/ScaleWidget.less	(revision 433)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#rft.claro .qedScaleWidget {
-    table {
-        text-align: center;
-    }
-    th { font-weight: normal; }
-    .item {
-        text-align: left;
-        max-width: 20em;
-    }
-    .min { text-align: right; padding-left: 2em; }
-    .max { text-align: left;  padding-right: 2em; }
-    .na { text-align: center; }
-}
Index: Dev/trunk/client/qed/model/widgets/ScaleConfigWidget.js
===================================================================
--- Dev/trunk/client/qed/model/widgets/ScaleConfigWidget.js	(revision 434)
+++ Dev/trunk/client/qed/model/widgets/ScaleConfigWidget.js	(revision 434)
@@ -0,0 +1,96 @@
+define([
+    "dijit/_Container",
+    "dijit/_TemplatedMixin",
+    "dijit/_WidgetBase",
+    "dijit/_WidgetsInTemplateMixin",
+    "dijit/form/Button",
+    "dijit/form/RadioButton",
+    "dijit/form/TextBox",
+    "dijit/form/ValidationTextBox",
+    "dijit/form/_FormMixin",
+    "dojo/_base/array",
+    "dojo/_base/declare",
+    "dojo/_base/event",
+    "dojo/_base/lang",
+    "dojo/dom-attr",
+    "dojo/dom-construct",
+    "dojo/dom-style",
+    "dojo/text!./templates/ScaleConfigRowWidget.html",
+    "dojo/text!./templates/ScaleConfigWidget.html",
+    "dijit/form/NumberTextBox",
+    "dijit/form/TextBox"
+], function(_Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, Button, RadioButton, TextBox, ValidationTextBox, _FormMixin, array, declare, event, lang, domAttr, domConstruct, domStyle, rowTemplate, template) {
+
+    var Row = declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container,_FormMixin],{
+        templateString: rowTemplate,
+        hasNA: true,
+        startup: function() {
+            if ( this._started ) { return; }
+            this.inherited(arguments);
+        },
+        onDestroy: function(e) {
+            this.destroyRecursive();
+            event.stop(e);
+            return false;
+        },
+        _setHasNAAttr: function(value) {
+            if ( value === true ) {
+                domStyle.set(this.naRadioButton.domNode, "display", "");
+            } else {
+                domStyle.set(this.naRadioButton.domNode, "display", "none");
+            }
+        }
+    });
+    
+    return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container,_FormMixin],{
+        templateString: template,
+        baseClass: "qedScaleWidget",
+        value: null,
+        _hasNA: false,
+        constuctor: function() {
+            this.inherited(arguments);
+            this.items = [];
+            this.value = {};
+        },
+        onAddItem: function(e) {
+            this._addItem();
+            event.stop(e);
+            return false;
+        },
+        _clearItems: function() {
+            domConstruct.empty(this.itemsNode);
+        },
+        _addItem: function(value) {
+            var item = new Row({
+                name: 'items',
+                value: value,
+                hasNA: this._hasNA
+            });
+            item.placeAt(this.itemsNode);
+            return item;
+        },
+        _setValueAttr: function(value) {
+            this.inherited(arguments);
+            this._clearItems();
+            array.forEach(value.items, function(value){
+                this._addItem(value);
+            }, this);
+        },
+        _getValueAttr: function(){
+            var value = this.inherited(arguments);
+            if ( value.items && !lang.isArray(value.items) ) {
+                value.items = [value.items];
+            }
+            return value;
+        },
+        onNAChange: function(value) {
+            this._hasNA = value !== null && value !== "";
+            this._updateNA();
+        },
+        _updateNA: function(value) {
+            array.forEach(this.getChildren(), function(child) {
+                child.set('hasNA', this._hasNA);
+            }, this);
+        }
+    });
+});
Index: Dev/trunk/client/qed/model/widgets/ScaleWidget.js
===================================================================
--- Dev/trunk/client/qed/model/widgets/ScaleWidget.js	(revision 434)
+++ Dev/trunk/client/qed/model/widgets/ScaleWidget.js	(revision 434)
@@ -0,0 +1,82 @@
+define([
+    "dijit/_Container",
+    "dijit/_TemplatedMixin",
+    "dijit/_WidgetBase",
+    "dijit/form/RadioButton",
+    "dijit/form/_FormMixin",
+    "dojo/_base/array",
+    "dojo/_base/declare",
+    "dojo/_base/lang",
+    "dojo/dom-attr",
+    "dojo/dom-construct",
+    "dojo/text!./templates/ScaleWidget.html"
+], function(_Container, _TemplatedMixin, _WidgetBase, RadioButton, _FormMixin, array, declare, lang, domAttr, domConstruct, template) {
+    return declare([_WidgetBase,_TemplatedMixin,_Container,_FormMixin],{
+        templateString: template,
+        baseClass: "qedScaleWidget",
+        min: 0,
+        max: 0,
+        minLabel: "",
+        maxLabel: "",
+        naLabel: null,
+        items: null,
+        value: null,
+        constuctor: function() {
+            this.items = [];
+            this.value = {};
+        },
+        startup: function() {
+            if ( this._started ) { return; }
+            this.inherited(arguments);
+            this._renderHead();
+            this._renderItems();
+        },
+        _renderHead: function() {
+            this.minNode.innerHTML = this.minLabel || "";
+            this.maxNode.innerHTML = this.maxLabel || "";
+            if ( this.naLabel !== null ) {
+                this.naNode.innerHTML = this.naLabel;
+            }
+            for (var i = this.min; i <= this.max; i++) {
+                domConstruct.create("th", {
+                    innerHTML: i.toString()
+                }, this.minNode, "after");
+            }
+        },
+        _renderItems: function() {
+            array.forEach(this.items, function(item,index) {
+                var tr = domConstruct.create("tr", {}, this.itemsNode);
+                var td;
+                var radio;
+                domConstruct.create("th", {
+                    innerHTML: item.text || "",
+                    'class': "item"
+                }, tr);
+                domConstruct.create("th", {
+                    innerHTML: item.minLabel || "",
+                    'class': 'min'
+                }, tr);
+                for (var i = this.min; i <= this.max; i++) {
+                    td = domConstruct.create("td", {}, tr);
+                    radio = new RadioButton({
+                        name: index.toString(),
+                        value: i.toString()
+                    });
+                    domConstruct.place(radio.domNode, td); 
+                }
+                domConstruct.create("th", {
+                    innerHTML: item.maxLabel || "",
+                    className: 'max'
+                }, tr);
+                if ( this.naLabel !== null ) {
+                    td = domConstruct.create("td", {}, tr);
+                    radio = new RadioButton({
+                        name: index.toString(),
+                        value: "n/a"
+                    });
+                    domConstruct.place(radio.domNode, td); 
+                }
+            }, this);
+        }
+    });
+});
Index: Dev/trunk/client/qed/model/widgets/templates/ScaleConfigRowWidget.html
===================================================================
--- Dev/trunk/client/qed/model/widgets/templates/ScaleConfigRowWidget.html	(revision 434)
+++ Dev/trunk/client/qed/model/widgets/templates/ScaleConfigRowWidget.html	(revision 434)
@@ -0,0 +1,38 @@
+<tr>
+  <th class="item">
+    <div name="text"
+         required="required"
+         data-dojo-type="dijit/form/ValidationTextBox"
+         data-dojo-props="placeholder: 'Item/Question text'"></div>
+  </th>
+  <th class="min">
+    <div name="minLabel"
+         required="required"
+         data-dojo-type="dijit/form/TextBox"
+         data-dojo-props="placeholder: 'Minimum label'"></div>
+  </th>
+  <td>
+    <div disabled="disabled"
+         data-dojo-type="dijit/form/RadioButton"></div>
+  </td>
+  <td>...</td>
+  <td>
+    <div disabled="disabled"
+         data-dojo-type="dijit/form/RadioButton"></div>
+  </td>
+  <th class="max">
+    <div name="maxLabel"
+         required="required"
+         data-dojo-type="dijit/form/TextBox"
+         data-dojo-props="placeholder: 'Maximum label'"></div>
+  </th>
+  <td class="na">
+    <div disabled="disabled"
+         data-dojo-attach-point="naRadioButton"
+         data-dojo-type="dijit/form/RadioButton"></div>
+  </td>
+  <th>
+    <button data-dojo-type="dijit/form/Button"
+            data-dojo-attach-event="onClick:onDestroy">X</button>
+  </th>
+</tr>
Index: Dev/trunk/client/qed/model/widgets/templates/ScaleConfigWidget.html
===================================================================
--- Dev/trunk/client/qed/model/widgets/templates/ScaleConfigWidget.html	(revision 434)
+++ Dev/trunk/client/qed/model/widgets/templates/ScaleConfigWidget.html	(revision 434)
@@ -0,0 +1,48 @@
+<div class="${baseClass}">
+  <table>
+    <thead>
+      <tr>
+        <th class="item"></th>
+        <th data-dojo-attach-point="minLabelNode"
+            class="min">
+          <div name="minLabel"
+               data-dojo-type="dijit/form/TextBox"
+               data-dojo-props="placeholder: 'Minimum label'"></div>
+        </th>
+        <th data-dojo-attach-point="minNode">
+          <div name="min"
+               data-dojo-type="dijit/form/NumberTextBox"
+               data-dojo-props="required: true, placeholder: 'Minimum value'"></div>
+        </th>
+        <th>...</th>
+        <th data-dojo-attach-point="maxNode">
+          <div name="max"
+               data-dojo-type="dijit/form/NumberTextBox"
+               data-dojo-props="required: true, placeholder: 'Maximum value'"></div>
+        </th>
+        <th data-dojo-attach-point="maxLabelNode" class="max">
+          <div name="maxLabel"
+               data-dojo-type="dijit/form/TextBox"
+               data-dojo-props="placeholder: 'Maximum label'"></div>
+        </th>
+        <th class="na">
+          <div name="naLabel"
+               data-dojo-attach-point="naTextBox"
+               data-dojo-attach-event="onChange: onNAChange"
+               data-dojo-type="dijit/form/TextBox"
+               data-dojo-props="placeholder: 'N/A label', intermediateChanges: true"></div>
+        </th>
+      </tr>
+    </thead>
+    <tbody data-dojo-attach-point="itemsNode">
+    </tbody>
+    <tbody>
+      <tr>
+        <td class="item">
+          <button data-dojo-type="dijit/form/Button"
+                  data-dojo-attach-event="onClick:onAddItem">Click to add item</button>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+</div>
Index: Dev/trunk/client/qed/model/widgets/templates/ScaleWidget.html
===================================================================
--- Dev/trunk/client/qed/model/widgets/templates/ScaleWidget.html	(revision 434)
+++ Dev/trunk/client/qed/model/widgets/templates/ScaleWidget.html	(revision 434)
@@ -0,0 +1,14 @@
+<div class="${baseClass}">
+  <table>
+    <thead>
+      <tr>
+        <th class="item"></th>
+        <th data-dojo-attach-point="minNode" class="min"></th>
+        <th data-dojo-attach-point="maxNode" class="max"></th>
+        <th class="na" data-dojo-attach-point="naNode"></th>
+      </tr>
+    </thead>
+    <tbody data-dojo-attach-point="itemsNode">
+    </tbody>
+  </table>
+</div>
Index: Dev/trunk/client/qed/tests/test_ScaleWidget.html
===================================================================
--- Dev/trunk/client/qed/tests/test_ScaleWidget.html	(revision 433)
+++ Dev/trunk/client/qed/tests/test_ScaleWidget.html	(revision 434)
@@ -14,37 +14,53 @@
           'dojo/when',
           'dojo/parser',
-          'qed/widgets/ScaleWidget',
+          'qed/model/widgets/ScaleConfigWidget',
+          'qed/model/widgets/ScaleWidget',
           'dojo/domReady!'
-      ], function(registry,dom,when,parser,ScaleWidget){
+      ], function(registry,dom,when,parser,ScaleConfigWidget,ScaleWidget){
         when(parser.parse()).then(function(){
-            var scaleWidget = new ScaleWidget({
-              min: -2,
-              max: 2,
-              min_label: "Bad",
-              max_label: "Good",
-              naLabel: "N/A",
-              name: "lala",
-              items: [{
-                 text: "How were the lectures?",
-                 minLabel: "Boring",
-                 maxLabel: "Engaging"
-              },{
-                 text: "How was the lab organised? How was the lab organised? How was the lab organised?",
-                 minLabel: "Sloppy",
-                 maxLabel: "Stiff as a board"
-              }]
-            },"widgetNode").startup();
 
+            var configWidget = registry.byId("configWidget");
+            var configNode = dom.byId("configNode");
             var valueNode = dom.byId("valueNode");
-            var valueForm = registry.byId("valueForm");
+            var widgetNode = dom.byId("widgetNode");
+            var widget = null;
+
+            registry.byId("configButton").on("click",function(){
+              if ( configWidget.validate() ) {
+                var config = configWidget.get('value');
+                configNode.innerHTML = JSON.stringify(config);
+                widgetNode.innerHTML = '';
+                widget = new ScaleWidget(config)
+                widget.startup();
+                widget.placeAt(widgetNode);
+              }
+            });
+      
             registry.byId("valueButton").on("click",function(){
-              valueNode.innerHTML = JSON.stringify(valueForm.get("value"));
+              if ( widget ) {
+                var value = widget.get('value');
+                valueNode.innerHTML = JSON.stringify(value);
+              }
+            });
+      
+            registry.byId("defaultConfigButton").on("click",function(){
+              configWidget.set('value',{
+                min: -2,
+                max: 2,
+                minLabel: "Bad",
+                maxLabel: "Good",
+                naLabel: "N/A",
+                items: [{
+                   text: "How were the lectures?",
+                   minLabel: "Boring",
+                   maxLabel: "Engaging"
+                },{
+                   text: "How was the lab organised? How was the lab organised? How was the lab organised?",
+                   minLabel: "Sloppy",
+                   maxLabel: "Stiff as a board"
+                }]
+              });
             });
 
-            var configNode = dom.byId("configNode");
-            var configForm = registry.byId("configForm");
-            registry.byId("configButton").on("click",function(){
-              configNode.innerHTML = JSON.stringify(configForm.get("value"));
-            });
         });
       });
@@ -53,33 +69,26 @@
     <h1>Test ScaleWidget</h1>
 
+    <h2>Config Widget</h2>
+    <div>
+      <div>
+        <div id="configWidget"
+             data-dojo-type="qed/model/widgets/ScaleConfigWidget"></div>
+        <button id="defaultConfigButton"
+                data-dojo-type="dijit/form/Button">Set Example</button>
+        <button id="configButton"
+                data-dojo-type="dijit/form/Button">Create widget</button>
+      </div>
+      <div id="configNode"></div>
+    </div>
+
     <h2>Widget</h2>
     <div>
-      <div id="valueForm" data-dojo-type="dijit/form/Form">
+      <div>
         <div id="widgetNode"></div>
-        <button id="valueButton" data-dojo-type="dijit/form/Button">Done</button>
+        <button id="valueButton"
+                data-dojo-type="dijit/form/Button">Done</button>
       </div>
+      <div id="valueNode"></div>
     </div>
-
-    <h2>Value</h2>
-    <div id="valueNode"></div>
-
-    <h2>ConfigurationWidget</h2>
-    <div>
-      <div id="configForm" data-dojo-type="dijit/form/Form">
-        <label>Min value</label><div name="minValue" data-dojo-type="dijit/form/TextBox"></div>
-        <label>Min label</label><div name="maxValue" data-dojo-type="dijit/form/TextBox"></div>
-        <label>Max value</label><div name="maxValue" data-dojo-type="dijit/form/TextBox"></div>
-        <label>Max label</label><div name="maxValue" data-dojo-type="dijit/form/TextBox"></div>
-
-        <label>Text</label><div name="items[0].text" data-dojo-type="dijit/form/TextBox"></div>
-        <label>Min label</label><div name="items[0].minLabel" data-dojo-type="dijit/form/TextBox"></div>
-        <label>Max label</label><div name="items[0].maxLabel" data-dojo-type="dijit/form/TextBox"></div>
-
-        <button id="configButton" data-dojo-type="dijit/form/Button">Done</button>
-      </div>
-    </div>
-
-    <h2>Value</h2>
-    <div id="configNode"></div>
 
   </body>
Index: Dev/trunk/client/qed/widgets/ScaleWidget.js
===================================================================
--- Dev/trunk/client/qed/widgets/ScaleWidget.js	(revision 433)
+++ 	(revision )
@@ -1,80 +1,0 @@
-define([
-    "dijit/_Container",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetBase",
-    "dijit/form/RadioButton",
-    "dijit/form/_FormMixin",
-    "dojo/_base/array",
-    "dojo/_base/declare",
-    "dojo/_base/lang",
-    "dojo/dom-attr",
-    "dojo/dom-construct",
-    "dojo/text!./templates/ScaleWidget.html"
-], function(_Container, _TemplatedMixin, _WidgetBase, RadioButton, _FormMixin, array, declare, lang, domAttr, domConstruct, template) {
-    return declare([_WidgetBase,_TemplatedMixin,_Container,_FormMixin],{
-        templateString: template,
-        baseClass: "qedScaleWidget",
-        min: 0,
-        max: 0,
-        minLabel: "",
-        maxLabel: "",
-        naLabel: null,
-        items: null,
-        value: null,
-        constuctor: function() {
-            this.items = [];
-            this.value = {};
-        },
-        startup: function() {
-            if ( this._started ) { return; }
-            this.inherited(arguments);
-            this._renderHead();
-            this._renderItems();
-        },
-        _renderHead: function() {
-            for (var i = this.min; i <= this.max; i++) {
-                domConstruct.create("th", {
-                    innerHTML: i.toString()
-                }, this.rangeNode, "after");
-            }
-            if ( this.naLabel !== null ) {
-                this.naNode.innerHTML = this.naLabel;
-            }
-        },
-        _renderItems: function() {
-            array.forEach(this.items, function(item,index) {
-                var tr = domConstruct.create("tr", {}, this.itemsNode);
-                var td;
-                var radio;
-                domConstruct.create("th", {
-                    innerHTML: item.text || "",
-                    'class': "item"
-                }, tr);
-                domConstruct.create("th", {
-                    innerHTML: item.minLabel || "",
-                    'class': 'min'
-                }, tr);
-                for (var i = this.min; i <= this.max; i++) {
-                    td = domConstruct.create("td", {}, tr);
-                    radio = new RadioButton({
-                        name: index.toString(),
-                        value: i.toString()
-                    });
-                    domConstruct.place(radio.domNode, td); 
-                }
-                domConstruct.create("th", {
-                    innerHTML: item.maxLabel || "",
-                    className: 'max'
-                }, tr);
-                if ( this.naLabel !== null ) {
-                    td = domConstruct.create("td", {}, tr);
-                    radio = new RadioButton({
-                        name: index.toString(),
-                        value: "n/a"
-                    });
-                    domConstruct.place(radio.domNode, td); 
-                }
-            }, this);
-        }
-    });
-});
Index: Dev/trunk/client/qed/widgets/templates/ScaleWidget.html
===================================================================
--- Dev/trunk/client/qed/widgets/templates/ScaleWidget.html	(revision 433)
+++ 	(revision )
@@ -1,14 +1,0 @@
-<div class="${baseClass}">
-  <table>
-    <thead>
-      <tr>
-        <th class="item"></th>
-        <th data-dojo-attach-point="rangeNode" class="min"></th>
-        <th class="max"></th>
-        <th class="na" data-dojo-attach-point="naNode"></th>
-      </tr>
-    </thead>
-    <tbody data-dojo-attach-point="itemsNode">
-    </tbody>
-  </table>
-</div>
