1) evaluate types; 2) implement cumulativity rule