add semantic