Merge from google.

Lots of change - see the commit list for detail. 
love