add semantic component