added more semantic rules