@blainesch It is cool to hear what you think. I am just thinking about those who is starting out with Crafty and have not wrote any code with Crafty, how they would think it would work. I do understand that polluting the top level object is a bad thing and so do I, but that does not makes sense for beginners and people just making games.

I like the idea and would really like that you could do something like this, because it would make the game code a lot simpler and very easy to read:

```
var hero = Crafty.e('2D, Canvas, HeroComponent')
    .attr({
        health: 100,
        mana: 100
    })
    .bind('Change[health]', function (health) {
        healthBar.update(health);
        if (health === 0) {
            hero.destroy();
            // Play animation, sound, etc..
        }
    })
    .bind('Change[mana]', function (mana) {
        manabar.update(mana);
        // add data.mana to totalusage
        if (mana === 0) {
            // Alarm the user
        }
    });
```

This makes the code very easy to read and understand instead of now you have to do one big change function with a lot of pseudo code, where you have you to check yourself if health has changed and then do something.
```
var hero = Crafty.e('2D, Canvas, HeroComponent')
    .attr({
        health: 100,
        mana: 200
    })
    .bind('Change', function (data) {
        if (data.health) {
            healthBar.update(data.health);
            if (data.health === 0) {
                hero.destroy();
                // Play animation, sound, etc..
            }
        }
        if (data.mana) {
            manabar.update(data.mana);
            // add data.mana to totalusage
            if (data.mana === 0) {
                // Alarm the user
            }
        }
    });
```