refactor Component