don’t hardcode class names (duh!)
rough in the attributes and throw in some design rationale (I wanted to break up this commit, but git got fussy about it, so meh)