ported for component