Starting to re-architect the component stuff