Update from upstream

This is a major update.