component system rewrite