Components finalize

I condensed the history of #302 a bit, then I added some changes on top. closes #302