adding optional component creation