component rewrite