Rewrite all teh things. More maintainable now. Still missing:

* Allocation optimizations (each new attribute re-allocs the list)
* Changing the type of an instance var.