revised version is much better thanks jun utc