merge in latest from upstream