Reintegrated changes from trunk.