added extending components logic