Refactor attributes dsl

* [ ] Consolidate constructor
* [ ] Does not gracefully handle unknown attributes