Refactoring component model out of core Gemgine