semantic analysis functions added