@kevinsimper, possibly but they could potentially overwrite something otherwise, right? It seems worth the risk imo. Attributes and data are different enough to need to be stored in different places.

Right now with them:
~~~
person = Crafty.e('Person, Collision')
person.attr(hit: 0) # Just overwrote `Collision.hit()`
~~~

With data, you *should* only use `get`, `set`, and `data` to access them and they can only collide with your own data.