Some work on the component factory. Namely, macros. Oh dear god forgive me. I didn't have much of a choice in this matter.