matrix rebuild wasn't shrinking matrix correctly, added interruptable receive