bug 920414 - (revised ver3. Rebased and conflict resolved)