careful -- always assert