Upstream pull

Merging in upstream changes.