add several semantic algorithm