initial checkin (backported from HEAD)