Add optional support for `preservesContext`. Also updated docs.