Question: I'm trying to get rid of some of the horrible nested loops in the following code. 
Essentially is moving TDs to top rows based on whether the current row has the current cell. You can see the execution here:
<http://jsfiddle.net/Jq8sk/>

How can I clean it up and avoid this level of depth. Any help is appreciated.

```
var trs = $('.trs');
var arr = ['n0', 'n1', 'n2'];
for (var i = 0; i < trs.length; i++) {
    for (var j = 0; j < arr.length; j++) {
        var tds = trs[i].getElementsByClassName('tds ' + arr[j]);
        if (tds.length == 0) {
           for (var x = i + 1; x < trs.length; x++) {
               var tds_offset = trs[x].getElementsByClassName('tds ' + arr[j]);
               if (tds_offset.length > 0) {
                  trs[i].appendChild(tds_offset[0]);
                  break;
               }
           }
        }
    }
}

```

Answer: 
A singleton is an object which is the only instance of its type. Therefore, it makes most sense to define all non-function properties and methods directly on that singleton:

```
var singleton = {
    prop1: ...,
    prop2: ...,
    method1: function () { ... },
    method2: function () { ... }
};

```

Extending the singleton is easy:

```
singleton.prop3 = ...;
singleton.method3 = ...;  

```
I agree with Šime Vidas; simplicity is best here.

```
var mui = {

    version: {
        major  : '0',
        minor  : '1',
        bugfix : '0'
    },

    sayHi : function () {
        alert('hi');
    }

};

```

There is no reason to use a constructor, since it will only construct a single object. Best to create the object directly.

On a side note, don't use `this` to refer to the global object. `document` would work just as well as `this.document`.