Moved most of component management to a mixin