update from upstream: 2.3.1