added components functionality