before merge from upstream