Feature component framework

Pretty much ready for merge now.