improved canProcess