first step add check semantic