pre upstream merge