implement mis partially
fill in other half
use MIS