I don't think this is correct. We need a separate implementation for non-zero elements here.