implement 'if' semantic