refactor combine components